diff options
author | fredrossperry <fredrossperry@gmail.com> | 2016-06-23 13:32:36 -0700 |
---|---|---|
committer | fredrossperry <fredrossperry@gmail.com> | 2016-07-06 11:14:49 -0700 |
commit | 01d5f0bc4185c001179ca6fd36530516acc16eeb (patch) | |
tree | 53622c9ef5aea76a6e781fb18380138d9f70d9bb /platform/android/example/app | |
parent | cb894e713b2f60fef0a7e83ccb3a3d29589193bc (diff) | |
download | mupdf-01d5f0bc4185c001179ca6fd36530516acc16eeb.tar.xz |
Android example: modify to use new JNI, N-up page display
- uses AndroidDrawDevice for rendering
- very simple sample app
- mupdf-specific functionality in a module called "mupdf"
- N-up page display
- page rendering in a background task
Signed-off-by: fredrossperry <fredrossperry@gmail.com>
Diffstat (limited to 'platform/android/example/app')
5 files changed, 36 insertions, 184 deletions
diff --git a/platform/android/example/app/.gitignore b/platform/android/example/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/platform/android/example/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/platform/android/example/app/build.gradle b/platform/android/example/app/build.gradle index 5d433deb..3a1b25b3 100644 --- a/platform/android/example/app/build.gradle +++ b/platform/android/example/app/build.gradle @@ -1,46 +1,26 @@ -apply plugin: 'com.android.model.application' - -model { - - android { - compileSdkVersion = 23 - buildToolsVersion = "23.0.2" - - defaultConfig.with { - applicationId = "com.artifex.mupdf.example" - minSdkVersion.apiLevel = 8 - targetSdkVersion.apiLevel = 16 - versionCode = 1 - versionName = "1.0" - } - } - - android.buildTypes { - release { - minifyEnabled = false - proguardFiles.add(file('proguard-rules.pro')) - } - } - - android.productFlavors { - create("arm") { - ndk.with { - // You can customize the NDK configurations for each - // productFlavors and buildTypes. - abiFilters.add("armeabi") - } - - } - } - - /* This is important, it will run lint checks but won't abort build */ - android.lintOptions { - abortOnError false - } - +apply plugin: 'com.android.application' + +android { + compileSdkVersion 23 + buildToolsVersion "23.0.2" + + defaultConfig { + applicationId "com.artifex.mupdf.example" + minSdkVersion 16 + targetSdkVersion 16 + versionCode 1 + versionName "1.0" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } } dependencies { - compile fileTree(dir: 'libs', include: ['*.jar','*.so']) - compile project(':mupdf') + compile fileTree(dir: 'libs', include: ['*.jar']) + compile 'com.android.support:appcompat-v7:23.4.0' + compile project(':mupdf') } diff --git a/platform/android/example/app/src/main/AndroidManifest.xml b/platform/android/example/app/src/main/AndroidManifest.xml index c1dc4e52..bdd8e804 100644 --- a/platform/android/example/app/src/main/AndroidManifest.xml +++ b/platform/android/example/app/src/main/AndroidManifest.xml @@ -3,7 +3,7 @@ package="com.artifex.mupdf.example"> <uses-sdk - android:minSdkVersion="8" + android:minSdkVersion="16" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> diff --git a/platform/android/example/app/src/main/java/com/artifex/mupdf/example/DocViewActivity.java b/platform/android/example/app/src/main/java/com/artifex/mupdf/example/DocViewActivity.java index a0e989ff..32f2cecd 100644 --- a/platform/android/example/app/src/main/java/com/artifex/mupdf/example/DocViewActivity.java +++ b/platform/android/example/app/src/main/java/com/artifex/mupdf/example/DocViewActivity.java @@ -1,105 +1,30 @@ package com.artifex.mupdf.example; import android.app.Activity; -import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; -import com.artifex.mupdf.fitz.ColorSpace; -import com.artifex.mupdf.fitz.Document; -import com.artifex.mupdf.fitz.Matrix; -import com.artifex.mupdf.fitz.Page; -import com.artifex.mupdf.fitz.Pixmap; +import com.artifex.mupdf.android.DocView; public class DocViewActivity extends Activity { - private int mPageCount; - private int mCurrentPage; - - Document mDocument; - Page mPage; - Bitmap mBitmap = null; - - ImageView mImageView; - TextView mTextView; + private DocView mDocView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_doc_view); - mImageView = (ImageView)findViewById(R.id.image_view); - mTextView = (TextView)findViewById(R.id.page_text); + // set up UI + setContentView(R.layout.activity_doc_view); + mDocView = (DocView)findViewById(R.id.doc_view); - // load the doc + // get the file path Uri uri = getIntent().getData(); - String path = Uri.decode(uri.getEncodedPath()); - mDocument = new Document(path); - mPageCount = mDocument.countPages(); - - // show the first page - mCurrentPage = 0; - displayCurrentPage(); - } + final String path = Uri.decode(uri.getEncodedPath()); - public void onFirstPageButton(final View v) - { - mCurrentPage = 0; - displayCurrentPage(); - } - - public void onPreviousPageButton(final View v) - { - if (mCurrentPage > 0) - { - mCurrentPage--; - displayCurrentPage(); - } + // start the view + mDocView.start(path); } - public void onNextPageButton(final View v) - { - if (mCurrentPage < mPageCount-1) - { - mCurrentPage++; - displayCurrentPage(); - } - } - - public void onLastPageButton(final View v) - { - mCurrentPage = mPageCount-1; - displayCurrentPage(); - } - - private void displayCurrentPage() - { - // report the page number - mTextView.setText(String.format("page %d of %d",mCurrentPage+1,mPageCount)); - - // get the page - mPage = mDocument.loadPage(mCurrentPage); - - // create a matrix that renders at 300 DPI - Matrix m = new Matrix(); - m.scale(300.0f/72.0f); - - // create a new bitmap for the page - Bitmap old = mBitmap; - Pixmap pixmap = mPage.toPixmap(m, ColorSpace.DeviceBGR); - mBitmap = Bitmap.createBitmap(pixmap.getWidth(), pixmap.getHeight(), Bitmap.Config.ARGB_8888); - int [] pixels = pixmap.getPixels(); - mBitmap.setPixels(pixels, 0, pixmap.getWidth(), 0, 0, pixmap.getWidth(), pixmap.getHeight()); - - // set the bitmap in the UI - mImageView.setImageBitmap(mBitmap); - - // recycle the old bitmap - if (old!=null) - old.recycle(); - } } diff --git a/platform/android/example/app/src/main/res/layout/activity_doc_view.xml b/platform/android/example/app/src/main/res/layout/activity_doc_view.xml index 05cee21a..7f5ece24 100644 --- a/platform/android/example/app/src/main/res/layout/activity_doc_view.xml +++ b/platform/android/example/app/src/main/res/layout/activity_doc_view.xml @@ -4,64 +4,10 @@ android:layout_height="match_parent" android:orientation="vertical"> - <LinearLayout - android:orientation="horizontal" - android:layout_width="match_parent" - android:layout_height="wrap_content"> - - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="|<-" - android:id="@+id/first_page_button" - android:onClick="onFirstPageButton" - android:minWidth="60dp" /> - - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="<" - android:id="@+id/previous_page_button" - android:onClick="onPreviousPageButton" - android:minWidth="60dp" /> - - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text=">" - android:id="@+id/next_page_button" - android:onClick="onNextPageButton" - android:minWidth="60dp" /> - - <Button - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="->|" - android:id="@+id/last_page_button" - android:onClick="onLastPageButton" - android:minWidth="60dp" /> - - <TextView - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceMedium" - android:text="Medium Text" - android:textColor="@color/white" - android:id="@+id/page_text" /> - - </LinearLayout> - - <LinearLayout - android:orientation="vertical" + <com.artifex.mupdf.android.DocView + android:id="@+id/doc_view" android:layout_width="match_parent" android:layout_height="match_parent"> - - <ImageView - android:id="@+id/image_view" - android:layout_width="match_parent" - android:layout_height="match_parent"> - </ImageView> - - </LinearLayout> + </com.artifex.mupdf.android.DocView> </LinearLayout> |