bin / mupdf / mupdf-1.7 / platform / android / src / com / artifex / mupdfdemo / MuPDFPageAdapter.java
7859 viewspackage com.artifex.mupdfdemo;12import android.content.Context;3import android.graphics.Bitmap;4import android.graphics.Point;5import android.graphics.PointF;6import android.util.SparseArray;7import android.view.View;8import android.view.ViewGroup;9import android.widget.BaseAdapter;1011public class MuPDFPageAdapter extends BaseAdapter {12private final Context mContext;13private final FilePicker.FilePickerSupport mFilePickerSupport;14private final MuPDFCore mCore;15private final SparseArray<PointF> mPageSizes = new SparseArray<PointF>();16private Bitmap mSharedHqBm;1718public MuPDFPageAdapter(Context c, FilePicker.FilePickerSupport filePickerSupport, MuPDFCore core) {19mContext = c;20mFilePickerSupport = filePickerSupport;21mCore = core;22}2324public int getCount() {25return mCore.countPages();26}2728public Object getItem(int position) {29return null;30}3132public long getItemId(int position) {33return 0;34}3536public View getView(final int position, View convertView, ViewGroup parent) {37final MuPDFPageView pageView;38if (convertView == null) {39if (mSharedHqBm == null || mSharedHqBm.getWidth() != parent.getWidth() || mSharedHqBm.getHeight() != parent.getHeight())40mSharedHqBm = Bitmap.createBitmap(parent.getWidth(), parent.getHeight(), Bitmap.Config.ARGB_8888);4142pageView = new MuPDFPageView(mContext, mFilePickerSupport, mCore, new Point(parent.getWidth(), parent.getHeight()), mSharedHqBm);43} else {44pageView = (MuPDFPageView) convertView;45}4647PointF pageSize = mPageSizes.get(position);48if (pageSize != null) {49// We already know the page size. Set it up50// immediately51pageView.setPage(position, pageSize);52} else {53// Page size as yet unknown. Blank it for now, and54// start a background task to find the size55pageView.blank(position);56AsyncTask<Void,Void,PointF> sizingTask = new AsyncTask<Void,Void,PointF>() {57@Override58protected PointF doInBackground(Void... arg0) {59return mCore.getPageSize(position);60}6162@Override63protected void onPostExecute(PointF result) {64super.onPostExecute(result);65// We now know the page size66mPageSizes.put(position, result);67// Check that this view hasn't been reused for68// another page since we started69if (pageView.getPage() == position)70pageView.setPage(position, result);71}72};7374sizingTask.execute((Void)null);75}76return pageView;77}78}798081