gestureImageview can show bitmap finally ,fix onmeaure() and  delete
layout flag
This commit is contained in:
weiyixiong 2015-11-18 15:03:06 +08:00
parent 802d9c7ab8
commit e796e48026
23 changed files with 1405 additions and 1228 deletions

View File

@ -36,35 +36,41 @@
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="PdfView.java" pinned="false" current-in-tab="true">
<file leaf-file-name="PdfView.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.583878">
<caret line="66" column="27" selection-start-line="66" selection-start-column="27" selection-end-line="66" selection-end-column="27" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4343#4463#0" expanded="true" />
<element signature="e#4462#4463#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GestureImageView.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-6.296296">
<caret line="387" column="0" selection-start-line="387" selection-start-column="0" selection-end-line="387" selection-end-column="0" />
<state vertical-scroll-proportion="0.0">
<caret line="40" column="14" selection-start-line="40" selection-start-column="14" selection-end-line="40" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="View.java" pinned="false" current-in-tab="false">
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/view/View.java">
<file leaf-file-name="FullScrollView.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/FullScrollView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="16411" column="16" selection-start-line="16411" selection-start-column="16" selection-end-line="16411" selection-end-column="16" />
<caret line="397" column="19" selection-start-line="397" selection-start-column="19" selection-end-line="397" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Main2Activity.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/Main2Activity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="17" column="18" selection-start-line="17" selection-start-column="18" selection-end-line="17" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="GestureImageView.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.41182914">
<caret line="159" column="5" selection-start-line="159" selection-start-column="5" selection-end-line="159" selection-end-column="5" />
<folding />
</state>
</provider>
@ -2850,27 +2856,36 @@
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/GraphView.java" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/AndroidManifest.xml" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/PdfViewerActivity.java" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/com/sun/pdfview/PDFParser.java" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/Main2Activity.java" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/res/layout/activity_main2.xml" />
<option value="$PROJECT_DIR$/PdfView/build.gradle" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/MathUtils.java" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/VectorF.java" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/GestureImageViewTouchListener.java" />
<option value="$PROJECT_DIR$/gestureimageview/build.gradle" />
<option value="$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/MathUtils.java" />
<option value="$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/FileUtils.java" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/AndroidManifest.xml" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/res/layout/activity_main2.xml" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/L.java" />
<option value="$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java" />
<option value="$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/Main2Activity.java" />
<option value="$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java" />
</list>
</option>
</component>
<component name="MavenImportPreferences">
<option name="generalSettings">
<MavenGeneralSettings>
<option name="mavenHome" value="Bundled (Maven 3)" />
</MavenGeneralSettings>
</option>
</component>
<component name="NamedScopeManager">
<order />
</component>
<component name="ProjectFrameBounds">
<option name="x" value="-1918" />
<option name="x" value="-1920" />
<option name="y" value="-17" />
<option name="width" value="1920" />
<option name="height" value="1057" />
@ -2898,8 +2913,39 @@
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="AndroidView">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pdfviewsample" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PdfView" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="Scratches" />
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -2950,35 +2996,74 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Scratches" />
<pane id="AndroidView">
<subPane>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pdfviewsample" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidViewProjectNode" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="PdfView" />
<option name="myItemType" value="com.android.tools.idea.navigator.nodes.AndroidModuleNode" />
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pdfviewsample" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="Android-Pdf-Viewer-Library" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pdfviewsample" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="main" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="pdfviewsample" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
@ -2997,7 +3082,7 @@
<property name="options.splitter.main.proportions" value="0.3" />
<property name="options.splitter.details.proportions" value="0.2" />
<property name="options.searchVisible" value="true" />
<property name="settings.editor.selected.configurable" value="android.sdk-updates" />
<property name="settings.editor.selected.configurable" value="preferences.sourceCode" />
<property name="settings.editor.splitter.proportion" value="0.2" />
<property name="android.project.structure.last.selected" value="SDK Location" />
<property name="android.project.structure.proportion" value="0.15" />
@ -3007,6 +3092,9 @@
<property name="ANDROID_EXTENDED_DEVICE_CHOOSER_AVD" value="react_native" />
<property name="OverrideImplement.combined" value="true" />
<property name="OverrideImplement.overriding.sorted" value="false" />
<property name="DEBUGGABLE_DEVICE" value="htc-htc_m8w-HC44YWM00097" />
<property name="DEBUGGABLE_PROCESS" value="com.wyx.pdf" />
<property name="SHOW_ALL_PROCESSES" value="false" />
</component>
<component name="RecentsManager">
<key name="android.template.packageName">
@ -3022,7 +3110,7 @@
<recent name="net.sf.andpdf.utils" />
</key>
</component>
<component name="RunManager" selected="Android Application.Main2Activity">
<component name="RunManager" selected="Android Application.pdfviewsample">
<configuration default="false" name="Main2Activity" type="AndroidRunConfigurationType" factoryName="Android Application" temporary="true">
<module name="pdfviewsample" />
<option name="DEPLOY" value="true" />
@ -3235,38 +3323,38 @@
</todo-panel>
</component>
<component name="ToolWindowManager">
<frame x="-1918" y="-17" width="1920" height="1057" extended-state="6" />
<frame x="-1920" y="-17" width="1920" height="1057" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Android Monitor" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.48246548" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="CodotaView" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960597" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973376" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3995749" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.49574015" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2848034" sideWeight="0.5063898" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.51753455" sideWeight="0.49361023" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.4978701" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="true" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2886049" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.19009584" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973376" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3995749" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="CodotaView" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32960597" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
</layout>
@ -3275,10 +3363,10 @@
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="SLIDING" type="SLIDING" visible="false" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2848034" sideWeight="0.5063898" order="7" side_tool="true" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.48246548" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.51753455" sideWeight="0.49361023" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
@ -3288,17 +3376,17 @@
<window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="true" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3995749" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32943678" sideWeight="0.49574015" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.4978701" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" side_tool="false" content_ui="tabs" />
<window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Gradle Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="true" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2886049" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.19009584" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32837406" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Gradle" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="5" side_tool="true" content_ui="tabs" />
@ -3326,74 +3414,21 @@
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java</url>
<line>387</line>
<line>317</line>
<properties />
<option name="timeStamp" value="12" />
<option name="timeStamp" value="21" />
</line-breakpoint>
</breakpoints>
<option name="time" value="13" />
<option name="time" value="22" />
</breakpoint-manager>
<watches-manager />
<watches-manager>
<configuration name="pdfviewsample">
<watch expression="drawable" />
<watch expression="drawable" />
</configuration>
</watches-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/com/sun/pdfview/function/FunctionType2.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="7" column="19" selection-start-line="7" selection-start-column="19" selection-end-line="7" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="22" column="30" selection-start-line="22" selection-start-column="30" selection-end-line="22" selection-end-column="30" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="14" column="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/res/values/strings.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Android-Pdf-Viewer-Library.iml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/Android-Pdf-Viewer-Library.iml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/build.gradle">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
@ -3405,7 +3440,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="14" column="14" selection-start-line="14" selection-start-column="14" selection-end-line="14" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
@ -3448,131 +3482,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="22" column="32" selection-start-line="22" selection-start-column="32" selection-end-line="22" selection-end-column="32" />
<folding>
<element signature="imports" expanded="false" />
<element signature="e#583#584#0" expanded="false" />
<element signature="e#620#621#0" expanded="false" />
<element signature="e#652#653#0" expanded="false" />
<element signature="e#695#696#0" expanded="false" />
<element signature="e#735#736#0" expanded="false" />
<element signature="e#779#780#0" expanded="false" />
<element signature="e#823#824#0" expanded="false" />
<element signature="e#869#870#0" expanded="false" />
<element signature="e#911#912#0" expanded="false" />
<element signature="e#956#957#0" expanded="false" />
<element signature="e#994#995#0" expanded="false" />
<element signature="e#1037#1038#0" expanded="false" />
<element signature="e#1077#1078#0" expanded="false" />
<element signature="e#1121#1122#0" expanded="false" />
<element signature="e#1174#1175#0" expanded="false" />
<element signature="e#1222#1223#0" expanded="false" />
<element signature="e#1264#1265#0" expanded="false" />
<element signature="e#1309#1310#0" expanded="false" />
<element signature="e#1338#1339#0" expanded="false" />
<element signature="e#1378#1379#0" expanded="false" />
<element signature="e#1407#1408#0" expanded="false" />
<element signature="e#1444#1445#0" expanded="false" />
<element signature="e#1488#1489#0" expanded="false" />
<element signature="e#1527#1528#0" expanded="false" />
<element signature="e#1686#1687#0" expanded="false" />
<element signature="e#1746#1747#0" expanded="false" />
<element signature="e#1809#1810#0" expanded="false" />
<element signature="e#1852#1853#0" expanded="false" />
<element signature="e#1878#1879#0" expanded="false" />
<element signature="e#1907#1908#0" expanded="false" />
<element signature="e#1932#1933#0" expanded="false" />
<element signature="e#1967#1968#0" expanded="false" />
<element signature="e#2039#2040#0" expanded="false" />
<element signature="e#2081#2082#0" expanded="false" />
<element signature="e#2123#2124#0" expanded="false" />
<element signature="e#2155#2156#0" expanded="false" />
<element signature="e#2195#2196#0" expanded="false" />
<element signature="e#2235#2236#0" expanded="false" />
<element signature="e#2264#2265#0" expanded="false" />
<element signature="e#2303#2304#0" expanded="false" />
<element signature="e#2347#2348#0" expanded="false" />
<element signature="e#2391#2392#0" expanded="false" />
<element signature="e#2424#2425#0" expanded="false" />
<element signature="e#2465#2466#0" expanded="false" />
<element signature="e#2513#2514#0" expanded="false" />
<element signature="e#2559#2560#0" expanded="false" />
<element signature="e#2590#2591#0" expanded="false" />
<element signature="e#2630#2631#0" expanded="false" />
<element signature="e#2676#2677#0" expanded="false" />
<element signature="e#2721#2722#0" expanded="false" />
<element signature="e#2748#2749#0" expanded="false" />
<element signature="e#2786#2787#0" expanded="false" />
<element signature="e#2828#2829#0" expanded="false" />
<element signature="e#2871#2872#0" expanded="false" />
<element signature="e#2900#2901#0" expanded="false" />
<element signature="e#2939#2940#0" expanded="false" />
<element signature="e#2983#2984#0" expanded="false" />
<element signature="e#3027#3028#0" expanded="false" />
<element signature="e#3058#3059#0" expanded="false" />
<element signature="e#3098#3099#0" expanded="false" />
<element signature="e#3144#3145#0" expanded="false" />
<element signature="e#3189#3190#0" expanded="false" />
<element signature="e#3222#3223#0" expanded="false" />
<element signature="e#3262#3263#0" expanded="false" />
<element signature="e#3305#3306#0" expanded="false" />
<element signature="e#3345#3346#0" expanded="false" />
<element signature="e#3382#3383#0" expanded="false" />
<element signature="e#3426#3427#0" expanded="false" />
<element signature="e#3459#3460#0" expanded="false" />
<element signature="e#3499#3500#0" expanded="false" />
<element signature="e#3534#3535#0" expanded="false" />
<element signature="e#3576#3577#0" expanded="false" />
<element signature="e#3602#3603#0" expanded="false" />
<element signature="e#3639#3640#0" expanded="false" />
<element signature="e#3684#3685#0" expanded="false" />
<element signature="e#3722#3723#0" expanded="false" />
<element signature="e#3748#3749#0" expanded="false" />
<element signature="e#3777#3778#0" expanded="false" />
<element signature="e#3809#3810#0" expanded="false" />
<element signature="e#3846#3847#0" expanded="false" />
<element signature="e#3913#3914#0" expanded="false" />
<element signature="e#3959#3960#0" expanded="false" />
<element signature="e#3988#3989#0" expanded="false" />
<element signature="e#4028#4029#0" expanded="false" />
<element signature="e#4079#4080#0" expanded="false" />
<element signature="e#4123#4124#0" expanded="false" />
<element signature="e#4160#4161#0" expanded="false" />
<element signature="e#4189#4190#0" expanded="false" />
<element signature="e#4372#4373#0" expanded="false" />
<element signature="e#4403#4404#0" expanded="false" />
<element signature="e#4560#4561#0" expanded="false" />
<element signature="e#4599#4600#0" expanded="false" />
<element signature="e#4653#4654#0" expanded="false" />
<element signature="e#4689#4690#0" expanded="false" />
<element signature="e#4734#4735#0" expanded="false" />
<element signature="e#4771#4772#0" expanded="false" />
<element signature="e#5481#5482#0" expanded="false" />
<element signature="e#5524#5525#0" expanded="false" />
<element signature="e#5567#5568#0" expanded="false" />
<element signature="e#5603#5604#0" expanded="false" />
<element signature="e#5665#5666#0" expanded="false" />
<element signature="e#5709#5710#0" expanded="false" />
<element signature="e#5754#5755#0" expanded="false" />
<element signature="e#5791#5792#0" expanded="false" />
<element signature="e#5855#5856#0" expanded="false" />
<element signature="e#5900#5901#0" expanded="false" />
<element signature="e#5947#5948#0" expanded="false" />
<element signature="e#5985#5986#0" expanded="false" />
<element signature="e#6015#6016#0" expanded="false" />
<element signature="e#6056#6057#0" expanded="false" />
<element signature="e#6083#6084#0" expanded="false" />
<element signature="e#6113#6114#0" expanded="false" />
<element signature="e#6141#6142#0" expanded="false" />
<element signature="e#6172#6173#0" expanded="false" />
<element signature="e#6208#6209#0" expanded="false" />
<element signature="e#6264#6265#0" expanded="false" />
<element signature="e#6310#6311#0" expanded="false" />
<element signature="e#6350#6351#0" expanded="false" />
<element signature="e#6412#6413#0" expanded="false" />
<element signature="e#6448#6449#0" expanded="false" />
<element signature="e#6490#6491#0" expanded="false" />
<element signature="e#6519#6520#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
@ -3597,19 +3506,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/FileUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.3519553">
<caret line="20" column="0" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-21/android/widget/FrameLayout.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.37254903">
<caret line="114" column="12" selection-start-line="114" selection-start-column="12" selection-end-line="114" selection-end-column="12" />
<folding />
</state>
</provider>
</entry>
@ -3621,21 +3521,10 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="13" column="27" selection-start-line="13" selection-start-column="27" selection-end-line="13" selection-end-column="27" />
<folding>
<element signature="e#220#238#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/com/sun/pdfview/PDFObject.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="52" column="13" selection-start-line="52" selection-start-column="13" selection-end-line="52" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
@ -3643,7 +3532,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.49019608">
<caret line="58" column="13" selection-start-line="58" selection-start-column="13" selection-end-line="58" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
@ -3651,10 +3539,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8039216">
<caret line="50" column="48" selection-start-line="50" selection-start-column="48" selection-end-line="50" selection-end-column="48" />
<folding>
<element signature="e#1349#1350#0" expanded="true" />
<element signature="e#1438#1439#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -3662,7 +3546,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33333334">
<caret line="2162" column="16" selection-start-line="2162" selection-start-column="16" selection-end-line="2162" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
@ -3670,7 +3553,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.32461873">
<caret line="362" column="9" selection-start-line="362" selection-start-column="9" selection-end-line="362" selection-end-column="9" />
<folding />
</state>
</provider>
</entry>
@ -3678,7 +3560,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.47058824">
<caret line="12" column="5" selection-start-line="12" selection-start-column="5" selection-end-line="12" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
@ -3686,7 +3567,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-1.9215686">
<caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -3694,18 +3574,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="1009" column="17" selection-start-line="1009" selection-start-column="17" selection-end-line="1009" selection-end-column="17" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/MainActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.078431375">
<caret line="8" column="41" selection-start-line="8" selection-start-column="41" selection-end-line="8" selection-end-column="41" />
<folding>
<element signature="e#463#464#0" expanded="true" />
<element signature="e#501#502#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -3713,7 +3581,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6" column="46" selection-start-line="6" selection-start-column="46" selection-end-line="6" selection-end-column="46" />
<folding />
</state>
</provider>
</entry>
@ -3721,7 +3588,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-5.3333335">
<caret line="48" column="28" selection-start-line="48" selection-start-column="26" selection-end-line="48" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
@ -3729,13 +3595,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-18.444445">
<caret line="171" column="48" selection-start-line="171" selection-start-column="48" selection-end-line="171" selection-end-column="48" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#8315#8671#0" expanded="true" />
<element signature="e#8670#8671#0" expanded="true" />
<element signature="e#9106#9286#0" expanded="true" />
<element signature="e#9285#9286#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -3743,7 +3602,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="1413" column="51" selection-start-line="1413" selection-start-column="51" selection-end-line="1413" selection-end-column="51" />
<folding />
</state>
</provider>
</entry>
@ -3751,39 +3609,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6325" column="44" selection-start-line="6325" selection-start-column="32" selection-end-line="6325" selection-end-column="44" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/FullScrollView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33333334">
<caret line="103" column="17" selection-start-line="103" selection-start-column="14" selection-end-line="103" selection-end-column="17" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/res/layout/activity_main2.xml">
<provider editor-type-id="android-designer">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-5.586207">
<caret line="9" column="42" selection-start-line="9" selection-start-column="30" selection-end-line="9" selection-end-column="42" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-21/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="11356" column="16" selection-start-line="11356" selection-start-column="16" selection-end-line="11356" selection-end-column="16" />
<folding>
<element signature="e#442128#442129#0" expanded="true" />
<element signature="e#442164#442165#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@ -3791,7 +3616,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -3799,7 +3623,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="5" column="0" selection-start-line="5" selection-start-column="0" selection-end-line="5" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -3807,7 +3630,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="32" column="5" selection-start-line="32" selection-start-column="5" selection-end-line="32" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>
@ -3823,7 +3645,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-9.333333">
<caret line="14" column="0" selection-start-line="14" selection-start-column="0" selection-end-line="14" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
@ -3831,7 +3652,6 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="4" column="30" selection-start-line="4" selection-start-column="30" selection-end-line="4" selection-end-column="30" />
<folding />
</state>
</provider>
</entry>
@ -3839,6 +3659,134 @@
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="23" column="33" selection-start-line="23" selection-start-column="33" selection-end-line="23" selection-end-column="33" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/Utils.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="23" column="3" selection-start-line="23" selection-start-column="3" selection-end-line="23" selection-end-column="3" />
<folding>
<element signature="e#985#986#0" expanded="false" />
<element signature="e#1053#1054#0" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/AndroidManifest.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="13" column="37" selection-start-line="13" selection-start-column="37" selection-end-line="13" selection-end-column="37" />
<folding>
<element signature="e#225#243#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/utils/FileUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="17" column="16" selection-start-line="17" selection-start-column="16" selection-end-line="17" selection-end-column="16" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/res/layout/activity_main2.xml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-7.448276">
<caret line="12" column="41" selection-start-line="12" selection-start-column="41" selection-end-line="12" selection-end-column="41" />
<folding />
</state>
</provider>
<provider editor-type-id="android-designer">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/MainActivity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="8" column="41" selection-start-line="8" selection-start-column="41" selection-end-line="8" selection-end-column="41" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/L.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="165" column="21" selection-start-line="165" selection-start-column="21" selection-end-line="165" selection-end-column="21" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.29795158">
<caret line="16412" column="57" selection-start-line="16412" selection-start-column="57" selection-end-line="16412" selection-end-column="57" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-23/android/graphics/drawable/BitmapDrawable.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-57.62963">
<caret line="539" column="41" selection-start-line="539" selection-start-column="33" selection-end-line="539" selection-end-column="41" />
<folding>
<element signature="e#16311#16312#0" expanded="true" />
<element signature="e#16397#16398#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/widget/ImageView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-12.148149">
<caret line="1227" column="28" selection-start-line="1227" selection-start-column="28" selection-end-line="1227" selection-end-column="28" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/graphics/Rect.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33296824">
<caret line="56" column="11" selection-start-line="56" selection-start-column="11" selection-end-line="56" selection-end-column="11" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/graphics/drawable/Drawable.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="206" column="22" selection-start-line="206" selection-start-column="22" selection-end-line="206" selection-end-column="22" />
<folding>
<element signature="e#7321#7322#0" expanded="true" />
<element signature="e#7356#7357#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/graphics/drawable/BitmapDrawable.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="480" column="32" selection-start-line="480" selection-start-column="32" selection-end-line="480" selection-end-column="32" />
<folding>
<element signature="e#22627#22628#0" expanded="true" />
<element signature="e#22667#22668#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-23/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="15368" column="0" selection-start-line="15368" selection-start-column="0" selection-end-line="15368" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-21/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="11356" column="16" selection-start-line="11356" selection-start-column="16" selection-end-line="11356" selection-end-column="16" />
<folding />
</state>
</provider>
@ -3846,38 +3794,32 @@
<entry file="file://$PROJECT_DIR$/pdfviewsample/src/main/java/com/wyx/pdfviewsample/Main2Activity.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="8" column="27" selection-start-line="8" selection-start-column="27" selection-end-line="8" selection-end-column="27" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$USER_HOME$/Documents/android-sdk-macosx/sources/android-19/android/view/View.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="16411" column="16" selection-start-line="16411" selection-start-column="16" selection-end-line="16411" selection-end-column="16" />
<caret line="17" column="18" selection-start-line="17" selection-start-column="18" selection-end-line="17" selection-end-column="18" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java">
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/FullScrollView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-6.296296">
<caret line="387" column="0" selection-start-line="387" selection-start-column="0" selection-end-line="387" selection-end-column="0" />
<state vertical-scroll-proportion="0.0">
<caret line="397" column="19" selection-start-line="397" selection-start-column="19" selection-end-line="397" selection-end-column="19" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/PdfView/src/main/java/net/sf/andpdf/pdfviewer/gui/PdfView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.583878">
<caret line="66" column="27" selection-start-line="66" selection-start-column="27" selection-end-line="66" selection-end-column="27" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4343#4463#0" expanded="true" />
<element signature="e#4462#4463#0" expanded="true" />
</folding>
<state vertical-scroll-proportion="0.0">
<caret line="40" column="14" selection-start-line="40" selection-start-column="14" selection-end-line="40" selection-end-column="14" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/gestureimageview/src/main/java/com/polites/android/GestureImageView.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.41182914">
<caret line="159" column="5" selection-start-line="159" selection-start-column="5" selection-end-line="159" selection-end-column="5" />
<folding />
</state>
</provider>
</entry>

View File

@ -30,266 +30,258 @@ import java.nio.channels.FileChannel;
public class PdfView extends FullScrollView {
private static final int STARTPAGE = 1;
private static final float STARTZOOM = 1.0f;
private static final int STARTPAGE = 1;
private static final float STARTZOOM = 1.0f;
private static final float MIN_ZOOM = 0.25f;
private static final float MAX_ZOOM = 3.0f;
private static final float ZOOM_INCREMENT = 1.5f;
private static final float MIN_ZOOM = 0.25f;
private static final float MAX_ZOOM = 3.0f;
private static final float ZOOM_INCREMENT = 1.5f;
private Bitmap mBi;
private GestureImageView mImageView;
private Handler uiHandler;
ImageButton bZoomOut;
ImageButton bZoomIn;
private PDFFile mPdfFile;
private PDFPage mPdfPage;
private Thread backgroundThread;
private int mPage;
private float mZoom;
private Bitmap mBi;
public GestureImageView mImageView;
private Handler uiHandler;
ImageButton bZoomOut;
ImageButton bZoomIn;
private PDFFile mPdfFile;
private PDFPage mPdfPage;
private Thread backgroundThread;
private int mPage;
private float mZoom;
public PdfView(Context context) {
this(context, null);
public PdfView(Context context) {
this(context, null);
}
public PdfView(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.scrollViewStyle);
}
public PdfView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
PDFImage.sShowImages = true;
PDFPaint.s_doAntiAlias = true;
uiHandler = new Handler();
LayoutParams matchLp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
mImageView = new GestureImageView(context);
mImageView.setLayoutParams(matchLp);
addView(mImageView);
setLayoutParams(matchLp);
setBackgroundColor(Color.LTGRAY);
setHorizontalScrollBarEnabled(true);
setHorizontalFadingEdgeEnabled(true);
setVerticalScrollBarEnabled(true);
setVerticalFadingEdgeEnabled(true);
}
public PDFFile getmPdfFile() {
return mPdfFile;
}
public void setmPdfFile(PDFFile mPdfFile) {
this.mPdfFile = mPdfFile;
}
private int getDeviceWidth() {
DisplayMetrics metric = new DisplayMetrics();
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metric);
return metric.widthPixels; // 屏幕宽度像素
}
private int getDeviceHeight() {
DisplayMetrics metric = new DisplayMetrics();
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metric);
return metric.heightPixels; // 屏幕高度像素
}
public void showPage(int page, float zoom) throws Exception {
try {
// free memory from previous page
updateImage();
// Only load the page if it's a different page (i.e. not just changing the zoom level)
if (mPdfPage == null || mPdfPage.getPageNumber() != page) {
mPdfPage = mPdfFile.getPage(page, true);
}
float width = mPdfPage.getWidth();
float height = mPdfPage.getHeight();
if (getLayoutParams().height == ViewGroup.LayoutParams.MATCH_PARENT) {
height *= getDeviceWidth() / width;
}
if (getLayoutParams().width == LayoutParams.MATCH_PARENT) {
width = getDeviceWidth();
}
RectF clip = null;
Bitmap bi = mPdfPage.getImage((int) (width * zoom), (int) (height * zoom), clip, true, true);
setPageBitmap(bi);
updateImage();
} catch (Throwable e) {
Log.e(TAG, e.getMessage(), e);
}
}
public PdfView(Context context, AttributeSet attrs) {
this(context, attrs, android.R.attr.scrollViewStyle);
private void updateImage() {
uiHandler.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(mBi);
}
});
}
private void setPageBitmap(Bitmap bi) {
if (bi != null) {
mBi = bi;
}
}
public PdfView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
PDFImage.sShowImages = true;
PDFPaint.s_doAntiAlias = true;
uiHandler = new Handler();
LayoutParams matchLp = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
mImageView = new GestureImageView(context);
private void zoomIn() {
if (mPdfFile != null) {
if (mZoom < MAX_ZOOM) {
mZoom *= ZOOM_INCREMENT;
if (mZoom > MAX_ZOOM) mZoom = MAX_ZOOM;
setPageBitmap(null);
updateImage();
addView(mImageView, matchLp);
setLayoutParams(new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
setBackgroundColor(Color.LTGRAY);
setHorizontalScrollBarEnabled(true);
setHorizontalFadingEdgeEnabled(true);
setVerticalScrollBarEnabled(true);
setVerticalFadingEdgeEnabled(true);
}
public PDFFile getmPdfFile() {
return mPdfFile;
}
public void setmPdfFile(PDFFile mPdfFile) {
this.mPdfFile = mPdfFile;
}
private int getDeviceWidth() {
DisplayMetrics metric = new DisplayMetrics();
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metric);
return metric.widthPixels; // 屏幕宽度像素
}
private int getDeviceHeight() {
DisplayMetrics metric = new DisplayMetrics();
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
wm.getDefaultDisplay().getMetrics(metric);
return metric.heightPixels; // 屏幕高度像素
}
public void showPage(int page, float zoom) throws Exception {
try {
// free memory from previous page
setPageBitmap(null);
updateImage();
// Only load the page if it's a different page (i.e. not just changing the zoom level)
if (mPdfPage == null || mPdfPage.getPageNumber() != page) {
mPdfPage = mPdfFile.getPage(page, true);
}
float width = mPdfPage.getWidth();
float height = mPdfPage.getHeight();
if (getLayoutParams().height == ViewGroup.LayoutParams.MATCH_PARENT) {
height *= getDeviceWidth() / width;
}
if (getLayoutParams().width == LayoutParams.MATCH_PARENT) {
width = getDeviceWidth();
}
RectF clip = null;
Bitmap bi = mPdfPage.getImage((int) (width * zoom), (int) (height * zoom), clip, true, true);
setPageBitmap(bi);
updateImage();
} catch (Throwable e) {
Log.e(TAG, e.getMessage(), e);
}
}
private void updateImage() {
uiHandler.post(new Runnable() {
public void run() {
mImageView.setImageBitmap(mBi);
}
});
}
private void setPageBitmap(Bitmap bi) {
if (bi != null) {
mBi = bi;
}
}
private void zoomIn() {
if (mPdfFile != null) {
if (mZoom < MAX_ZOOM) {
mZoom *= ZOOM_INCREMENT;
if (mZoom > MAX_ZOOM) mZoom = MAX_ZOOM;
if (mZoom >= MAX_ZOOM) {
Log.d(TAG, "Disabling zoom in button");
bZoomIn.setEnabled(false);
} else {
bZoomIn.setEnabled(true);
}
bZoomOut.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void zoomOut() {
if (mPdfFile != null) {
if (mZoom > MIN_ZOOM) {
mZoom /= ZOOM_INCREMENT;
if (mZoom < MIN_ZOOM) mZoom = MIN_ZOOM;
if (mZoom <= MIN_ZOOM) {
Log.d(TAG, "Disabling zoom out button");
bZoomOut.setEnabled(false);
} else {
bZoomOut.setEnabled(true);
}
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void nextPage() {
if (mPdfFile != null) {
if (mPage < mPdfFile.getNumPages()) {
mPage += 1;
bZoomOut.setEnabled(true);
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void prevPage() {
if (mPdfFile != null) {
if (mPage > 1) {
mPage -= 1;
bZoomOut.setEnabled(true);
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void gotoPage() {
if (mPdfFile != null) {
// showDialog(DIALOG_PAGENUM);
}
}
public synchronized void startRenderThread(final int page, final float zoom) {
if (backgroundThread != null) return;
backgroundThread = new Thread(new Runnable() {
public void run() {
try {
if (mPdfFile != null) {
showPage(page, zoom);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
backgroundThread = null;
}
});
updateImageStatus();
backgroundThread.start();
}
private void updateImageStatus() {
if (backgroundThread == null) {
return;
}
postDelayed(new Runnable() {
public void run() {
updateImageStatus();
}
}, 1000);
}
public void parsePDF(File f, String password) throws PDFAuthenticationFailureException {
try {
long len = f.length();
if (len == 0) {
toastMessage("file '" + f.getName() + "' not found");
} else {
toastMessage("file '" + f.getName() + "' has " + len + " bytes");
openFile(f, password);
}
} catch (PDFAuthenticationFailureException e) {
throw e;
} catch (Throwable e) {
e.printStackTrace();
toastMessage("Exception: " + e.getMessage());
}
}
public void parsePDF(String filename, String password) throws PDFAuthenticationFailureException {
try {
File f = new File(filename);
long len = f.length();
if (len == 0) {
toastMessage("file '" + filename + "' not found");
} else {
toastMessage("file '" + filename + "' has " + len + " bytes");
openFile(f, password);
}
} catch (PDFAuthenticationFailureException e) {
throw e;
} catch (Throwable e) {
e.printStackTrace();
toastMessage("Exception: " + e.getMessage());
}
}
public void openFile(File file, String password) throws IOException {
// first open the file for random access
RandomAccessFile raf = new RandomAccessFile(file, "r");
// extract a file channel
FileChannel channel = raf.getChannel();
// now memory-map a byte-buffer
ByteBuffer bb = ByteBuffer.NEW(channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()));
// create a PDFFile from the data
if (password == null) {
mPdfFile = new PDFFile(bb);
if (mZoom >= MAX_ZOOM) {
Log.d(TAG, "Disabling zoom in button");
bZoomIn.setEnabled(false);
} else {
mPdfFile = new PDFFile(bb, new PDFPassword(password));
bZoomIn.setEnabled(true);
}
toastMessage("Anzahl Seiten:" + mPdfFile.getNumPages());
}
public void toastMessage(String msg) {
Toast.makeText(getContext(), msg, Toast.LENGTH_LONG).show();
bZoomOut.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void zoomOut() {
if (mPdfFile != null) {
if (mZoom > MIN_ZOOM) {
mZoom /= ZOOM_INCREMENT;
if (mZoom < MIN_ZOOM) mZoom = MIN_ZOOM;
if (mZoom <= MIN_ZOOM) {
Log.d(TAG, "Disabling zoom out button");
bZoomOut.setEnabled(false);
} else {
bZoomOut.setEnabled(true);
}
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void nextPage() {
if (mPdfFile != null) {
if (mPage < mPdfFile.getNumPages()) {
mPage += 1;
bZoomOut.setEnabled(true);
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void prevPage() {
if (mPdfFile != null) {
if (mPage > 1) {
mPage -= 1;
bZoomOut.setEnabled(true);
bZoomIn.setEnabled(true);
startRenderThread(mPage, mZoom);
}
}
}
private void gotoPage() {
if (mPdfFile != null) {
// showDialog(DIALOG_PAGENUM);
}
}
public synchronized void startRenderThread(final int page, final float zoom) {
if (backgroundThread != null) return;
backgroundThread = new Thread(new Runnable() {
public void run() {
try {
if (mPdfFile != null) {
showPage(page, zoom);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage(), e);
}
backgroundThread = null;
}
});
updateImageStatus();
backgroundThread.start();
}
private void updateImageStatus() {
if (backgroundThread == null) {
return;
}
postDelayed(new Runnable() {
public void run() {
updateImageStatus();
}
}, 1000);
}
public void parsePDF(File f, String password) throws PDFAuthenticationFailureException {
try {
long len = f.length();
if (len == 0) {
toastMessage("file '" + f.getName() + "' not found");
} else {
toastMessage("file '" + f.getName() + "' has " + len + " bytes");
openFile(f, password);
}
} catch (PDFAuthenticationFailureException e) {
throw e;
} catch (Throwable e) {
e.printStackTrace();
toastMessage("Exception: " + e.getMessage());
}
}
public void parsePDF(String filename, String password) throws PDFAuthenticationFailureException {
try {
File f = new File(filename);
long len = f.length();
if (len == 0) {
toastMessage("file '" + filename + "' not found");
} else {
toastMessage("file '" + filename + "' has " + len + " bytes");
openFile(f, password);
}
} catch (PDFAuthenticationFailureException e) {
throw e;
} catch (Throwable e) {
e.printStackTrace();
toastMessage("Exception: " + e.getMessage());
}
}
public void openFile(File file, String password) throws IOException {
// first open the file for random access
RandomAccessFile raf = new RandomAccessFile(file, "r");
// extract a file channel
FileChannel channel = raf.getChannel();
// now memory-map a byte-buffer
ByteBuffer bb = ByteBuffer.NEW(channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size()));
// create a PDFFile from the data
if (password == null) {
mPdfFile = new PDFFile(bb);
} else {
mPdfFile = new PDFFile(bb, new PDFPassword(password));
}
toastMessage("Anzahl Seiten:" + mPdfFile.getNumPages());
}
public void toastMessage(String msg) {
Toast.makeText(getContext(), msg, Toast.LENGTH_LONG).show();
}
}

View File

@ -2,11 +2,11 @@
<items version="2" >
<item
jar="/Users/winney/git/Android-Pdf-Viewer-Library/pdfviewsample/build/intermediates/exploded-aar/Android-Pdf-Viewer-Library/PdfView/unspecified/jars/classes.jar"
jar="/Users/winney/git/Android-Pdf-Viewer-Library/pdfviewsample/build/intermediates/exploded-aar/Android-Pdf-Viewer-Library/gestureimageview/unspecified/jars/classes.jar"
jumboMode="false"
revision="23.0.2"
sha1="e7d6dd07e1cac71ea7611e16c5dcd8b3cba978dc">
<dex dex="/Users/winney/git/Android-Pdf-Viewer-Library/pdfviewsample/build/intermediates/pre-dexed/debug/classes-dbc371ee905b36ce5cd278976d41c35b063e55b0.jar" />
sha1="2f2ce378a301d9d7e7e28471e3b2ca00a2a7a295">
<dex dex="/Users/winney/git/Android-Pdf-Viewer-Library/pdfviewsample/build/intermediates/pre-dexed/debug/classes-2d8e925b68621d359f738ab3f7d7c4efa44a8520.jar" />
</item>
</items>

View File

@ -1,21 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.wyx.pdfviewsample">
package="com.wyx.pdfviewsample"
>
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<application
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
>
<activity android:name=".MainActivity">
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Main2Activity">
</activity>
<activity android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
</activity>
</application>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>

View File

@ -0,0 +1,242 @@
package com.wyx.pdfviewsample;
import android.os.Environment;
import android.text.TextUtils;
import android.util.Log;
import android.view.MotionEvent;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
* Log record tool
*/
@SuppressWarnings({ "unused", "ResultOfMethodCallIgnored" }) public class L {
private static final int LOG_CAT_MAX_LENGTH = 3900;
private static final String TAG_LINE_BREAK = "****";
private static final String EMPTY_LOG = "---";
private static final String ROOT = Environment.getExternalStorageDirectory().getAbsolutePath();
private static final String FILE_NAME = "logger.log";
private static final int WRITE_TO_SD_PRIORITY_LEVEL = Log.DEBUG;
private static String logFile = ROOT + "/" + FILE_NAME;
private static boolean write2SdCard = false;
private static int write2SdPriorityLevel = WRITE_TO_SD_PRIORITY_LEVEL;
private static boolean debug = true;
public static void setDebug(boolean debug) {
L.debug = debug;
}
public static void setWrite2SdCard(boolean sdCard) {
write2SdCard = sdCard;
}
public static void setWriteToSdPriorityLevel(int level) {
write2SdPriorityLevel = level;
}
public static void exception(Throwable e) {
if (debug && e != null) {
e.printStackTrace();
}
}
public static void exception(Throwable e, String s) {
if (debug && e != null) {
e.printStackTrace();
e(TAG_LINE_BREAK, s);
}
}
public static void w(Object object, Object msg) {
if (debug) {
print(Log.WARN, object, msg);
}
}
public static void w(Object msg) {
if (debug) {
print(Log.WARN, TAG_LINE_BREAK, msg);
}
}
public static void v(Object object, Object msg) {
if (debug) {
print(Log.VERBOSE, object, msg);
}
}
public static void v(Object msg) {
if (debug) {
print(Log.VERBOSE, TAG_LINE_BREAK, msg);
}
}
public static void d(Object object, Object msg) {
if (debug) {
print(Log.DEBUG, object, msg);
}
}
public static void d(Object msg) {
if (debug) {
print(Log.DEBUG, TAG_LINE_BREAK, msg);
}
}
public static void i(Object object, Object msg) {
if (debug) {
print(Log.INFO, object, msg);
}
}
public static void i(Object msg) {
if (debug) {
print(Log.INFO, TAG_LINE_BREAK, msg);
}
}
public static void e(Object object, Object msg) {
if (debug) {
print(Log.ERROR, object, msg);
}
}
public static void e(Object msg) {
if (debug) {
print(Log.ERROR, TAG_LINE_BREAK, msg);
}
}
private static void print(int priority, Object tag, Object msg) {
String s = toString(msg);
printToLogCat(priority, tag, s);
if (write2SdCard) {
writeLog(priority, tag, s);
}
}
private static void printToLogCat(int priority, Object tag, String s) {
if (s.length() > LOG_CAT_MAX_LENGTH) {
println(priority, tag, "log length - " + String.valueOf(s.length()));
int chunkCount = s.length() / LOG_CAT_MAX_LENGTH; // integer division
for (int i = 0; i <= chunkCount; i++) {
int max = LOG_CAT_MAX_LENGTH * (i + 1);
if (max >= s.length()) {
println(priority, "chunk " + i + " of " + chunkCount, s.substring(LOG_CAT_MAX_LENGTH * i, s.length()));
} else {
println(priority, "chunk " + i + " of " + chunkCount, s.substring(LOG_CAT_MAX_LENGTH * i, max));
}
}
} else {
println(priority, tag, s);
}
}
public static void resetLogFile() {
File file = new File(logFile);
file.delete();
try {
file.createNewFile();
} catch (IOException e) {
exception(e);
}
}
private static void writeLog(int priority, Object tag, String s) {
if (TextUtils.isEmpty(s)) {
return;
}
if (priority < write2SdPriorityLevel) {
return;
}
try {
File file = new File(logFile);
if (!file.exists()) {
file.createNewFile();
}
FileWriter writer = new FileWriter(file, true);
writer.flush();
writer.close();
} catch (IOException e) {
exception(e);
}
}
private static void println(int priority, Object tag, String s) {
Log.println(priority, getTagName(tag), s);
}
private static String getTagName(Object tag) {
if (tag instanceof String) {
return (String) tag;
}
if (tag instanceof Class<?>) {
return ((Class<?>) tag).getSimpleName();
} else {
return getTagName(tag.getClass());
}
}
private static String toString(Object msg) {
if (msg == null) {
return EMPTY_LOG;
}
String s = msg.toString();
if (s.isEmpty()) {
return EMPTY_LOG;
} else {
return s;
}
}
public static void printTouchEvent(MotionEvent ev) {
L.e("touch event", actionToString(ev.getAction()));
final int pointerCount = ev.getPointerCount();
for (int i = 0; i < pointerCount; i++) {
L.d("point",
"id[" + i + "]=" + ev.getPointerId(i) + ", x[" + i + "]=" + ev.getX(i) + ", y[" + i + "]=" + ev.getY(i));
}
// L.d("pointer count", pointerCount);
}
public static String actionToString(int action) {
switch (action) {
case MotionEvent.ACTION_DOWN:
return "ACTION_DOWN";
case MotionEvent.ACTION_UP:
return "ACTION_UP";
case MotionEvent.ACTION_CANCEL:
return "ACTION_CANCEL";
case MotionEvent.ACTION_OUTSIDE:
return "ACTION_OUTSIDE";
case MotionEvent.ACTION_MOVE:
return "ACTION_MOVE";
case MotionEvent.ACTION_HOVER_MOVE:
return "ACTION_HOVER_MOVE";
case MotionEvent.ACTION_SCROLL:
return "ACTION_SCROLL";
case MotionEvent.ACTION_HOVER_ENTER:
return "ACTION_HOVER_ENTER";
case MotionEvent.ACTION_HOVER_EXIT:
return "ACTION_HOVER_EXIT";
}
int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_POINTER_DOWN:
return "ACTION_POINTER_DOWN(" + index + ")";
case MotionEvent.ACTION_POINTER_UP:
return "ACTION_POINTER_UP(" + index + ")";
default:
return Integer.toString(action);
}
}
}

View File

@ -2,30 +2,40 @@ package com.wyx.pdfviewsample;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import java.io.IOException;
import net.sf.andpdf.pdfviewer.gui.PdfView;
import net.sf.andpdf.utils.FileUtils;
import java.io.IOException;
public class Main2Activity extends Activity {
PdfView pdfView;
PdfView pdfView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
pdfView = (PdfView) findViewById(R.id.pdf_view);
pdfView = (PdfView) findViewById(R.id.pdf_view);
try {
pdfView.parsePDF(FileUtils.fileFromAsset(this, "about.pdf"), null);
} catch (IOException e) {
e.printStackTrace();
}
pdfView.startRenderThread(1, 1.0f);
//ViewGroup.LayoutParams params =
// new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
//GestureImageView view = pdfView.mImageView;
//view.setImageResource(R.drawable.back02);
//view.setLayoutParams(params);
//ViewGroup layout = (ViewGroup) findViewById(R.id.layout);
//layout.addView(view);
View view = pdfView.mImageView;
}
@Override protected void onStart() {
super.onStart();
try {
pdfView.parsePDF(FileUtils.fileFromAsset(this, "about.pdf"), null);
} catch (IOException e) {
e.printStackTrace();
}
pdfView.startRenderThread(1, 1.0f);
}
}

View File

@ -1,14 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/layout"
android:orientation="vertical"
>
<net.sf.andpdf.pdfviewer.gui.PdfView
android:id="@+id/pdf_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
/>
<net.sf.andpdf.pdfviewer.gui.PdfView
android:id="@+id/pdf_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp" />
</LinearLayout>