]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/commitdiff
Reimplemented the preview by using the pdfview widget
authorMichal Horn <hornmich@fel.cvut.cz>
Mon, 16 Feb 2015 16:52:08 +0000 (17:52 +0100)
committerMichal Horn <hornmich@fel.cvut.cz>
Mon, 16 Feb 2015 16:52:08 +0000 (17:52 +0100)
QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/PreviewActivity.java
QRScanner/glass/src/main/java/cz/cvut/fel/dce/qrscanner/pdfviewer/PdfPageView.java
QRScanner/glass/src/main/res/layout/activity_preview.xml

index 7ba8fcd9b5d5c1e9c4b652488b1d8cce084ea632..6ee7b2c29fc412698df13e0f8fa9349baafe7b21 100644 (file)
@@ -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<Void, Void, Void> {
+
+               @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.");
+               }
+       }
+
 }
index 66a99e62c4aa42ffeab6e5a5d88b5655cf2d3450..3254966940e0fae7f240c40f4388db2312d933c7 100644 (file)
@@ -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
index bda06901942d5627eff427163e21e8f98287d066..e28ceeb98c0ad59cae7dafdd8d40d5e8b1da5cad 100644 (file)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:orientation="horizontal"
               android:layout_width="match_parent"
               android:layout_height="match_parent">
@@ -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"/>
 
-</LinearLayout>
\ No newline at end of file
+    <RelativeLayout
+        android:layout_width="73dp"
+        android:layout_height="match_parent"
+        android:id="@+id/progress_container"
+        android:layout_alignParentTop="true"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentStart="true">
+
+        <ProgressBar
+            style="?android:attr/progressBarStyleLarge"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:id="@+id/progressBar2"
+            android:layout_centerVertical="true"
+            android:layout_centerHorizontal="true"/>
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:text="@string/loading_page"
+            android:id="@+id/textView5"
+            android:layout_below="@+id/progressBar2"
+            android:layout_alignStart="@+id/progressBar2"/>
+    </RelativeLayout>
+
+</RelativeLayout>
\ No newline at end of file