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;
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;
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);
@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();
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.");
+ }
+ }
+
}
<?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">
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