From 429daf2076485f326986b61f30188c24cc29dfa8 Mon Sep 17 00:00:00 2001 From: Michal Horn Date: Mon, 16 Feb 2015 17:52:08 +0100 Subject: [PATCH] Reimplemented the preview by using the pdfview widget --- .../fel/dce/qrscanner/PreviewActivity.java | 56 +++++++++++++++---- .../dce/qrscanner/pdfviewer/PdfPageView.java | 6 ++ .../src/main/res/layout/activity_preview.xml | 31 +++++++++- 3 files changed, 79 insertions(+), 14 deletions(-) diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java index 7ba8fcd..6ee7b2c 100644 --- a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java @@ -5,6 +5,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Color; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.KeyEvent; @@ -13,11 +14,13 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewTreeObserver; import android.widget.ImageView; +import android.widget.RelativeLayout; import android.widget.Toast; import java.io.File; import cz.cvut.fel.dce.qrscanner.mupdf.MuPDFCore; +import cz.cvut.fel.dce.qrscanner.pdfviewer.PdfPageView; import cz.cvut.fel.dce.qrscanner.pdfviewer.PdfViewActivity; @@ -33,15 +36,20 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob public static final String SKODA_COMP_MANUFACT_GUIDE = "Werkstatt_Einleitung.pdf"; private ImageView mPreviewImg; + private RelativeLayout mProgressContainer; private ViewTreeObserver mPreviewImgObserver; private String mComponentId; private String mComponentRootPath; + private PdfPageView mPdfView; + private boolean mPdfLoaded; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_preview); + mPdfLoaded = false; mPreviewImg = (ImageView) findViewById(R.id.imgComponent); + mProgressContainer = (RelativeLayout) findViewById(R.id.progress_container); if (mPreviewImg != null) { mPreviewImg.setMaxWidth(640); @@ -93,21 +101,19 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob @Override public void onGlobalLayout() { + if (mPdfLoaded) { + Log.d(TAG, "PDF file already loaded."); + return; + } try { String picturePath = mComponentRootPath + SKODA_COMP_PICTURE_NAME; Log.i(TAG, "Path to component files: " + picturePath); + mPdfView = new PdfPageView(getApplicationContext(), picturePath); + mPdfView.setPage(0); + new LoadPageTask().execute(); + + mPdfLoaded = true; - MuPDFCore core = new MuPDFCore(getApplicationContext(), picturePath); - Log.d(TAG, "numpages: "+ core.countPages()); - MuPDFCore.Cookie cookie = core.new Cookie(); - int pageW = (int)core.getPageSize(0).x; - int pageH = (int)core.getPageSize(0).y; - Log.d(TAG, "page size: " + pageW + ", " + pageH); - Bitmap.Config conf = Bitmap.Config.ARGB_8888; - Bitmap previewBitmap = Bitmap.createBitmap(pageW, pageH, conf); - core.drawPage(previewBitmap, 0, pageW, pageH, 0, 0, pageW, pageH, cookie); - mPreviewImg.setImageBitmap(previewBitmap); - mPreviewImg.invalidate(); } catch (Exception e) { Toast toast = Toast.makeText(getApplicationContext(), "Component preview could not be loaded.", Toast.LENGTH_LONG); toast.show(); @@ -181,4 +187,32 @@ public class PreviewActivity extends Activity implements ViewTreeObserver.OnGlob return super.onOptionsItemSelected(item); } } + + private class LoadPageTask extends AsyncTask { + + @Override + protected Void doInBackground(Void[] objects) { + mPdfView.loadPage(); + return null; + } + + @Override + protected void onPreExecute() { + super.onPreExecute(); + Log.d(TAG, "Starting loading of the PDF page asynchronously."); + mProgressContainer.setVisibility(View.VISIBLE); + } + + @Override + protected void onPostExecute(Void aVoid) { + super.onPostExecute(aVoid); + mProgressContainer.setVisibility(View.INVISIBLE); + mPreviewImg.setMinimumWidth(640); + mPreviewImg.setMinimumHeight(360); + mPreviewImg.setImageBitmap(mPdfView.getPageBitmap()); + mPreviewImg.invalidate(); + Log.d(TAG, "PDF page loaded."); + } + } + } diff --git a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfPageView.java b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfPageView.java index 66a99e6..3254966 100644 --- a/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfPageView.java +++ b/QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfPageView.java @@ -211,6 +211,12 @@ public class PdfPageView extends View { } } + public Bitmap getPageBitmap() { + return mPdfBitmap; + } + + + /** * Set a listener of the events * @param listener listener of the events diff --git a/QRScanner/glass/src/main/res/layout/activity_preview.xml b/QRScanner/glass/src/main/res/layout/activity_preview.xml index bda0690..e28ceeb 100644 --- a/QRScanner/glass/src/main/res/layout/activity_preview.xml +++ b/QRScanner/glass/src/main/res/layout/activity_preview.xml @@ -1,5 +1,5 @@ - @@ -8,8 +8,33 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/imgComponent" - android:layout_weight="0.95" android:layout_gravity="center_horizontal" android:scaleType="center"/> - \ No newline at end of file + + + + + + + + \ No newline at end of file -- 2.39.2