Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
7859 views
1
package com.artifex.mupdfdemo;
2
3
import android.content.Context;
4
import android.graphics.Bitmap;
5
import android.graphics.Point;
6
import android.graphics.PointF;
7
import android.util.SparseArray;
8
import android.view.View;
9
import android.view.ViewGroup;
10
import android.widget.BaseAdapter;
11
12
public class MuPDFPageAdapter extends BaseAdapter {
13
private final Context mContext;
14
private final FilePicker.FilePickerSupport mFilePickerSupport;
15
private final MuPDFCore mCore;
16
private final SparseArray<PointF> mPageSizes = new SparseArray<PointF>();
17
private Bitmap mSharedHqBm;
18
19
public MuPDFPageAdapter(Context c, FilePicker.FilePickerSupport filePickerSupport, MuPDFCore core) {
20
mContext = c;
21
mFilePickerSupport = filePickerSupport;
22
mCore = core;
23
}
24
25
public int getCount() {
26
return mCore.countPages();
27
}
28
29
public Object getItem(int position) {
30
return null;
31
}
32
33
public long getItemId(int position) {
34
return 0;
35
}
36
37
public View getView(final int position, View convertView, ViewGroup parent) {
38
final MuPDFPageView pageView;
39
if (convertView == null) {
40
if (mSharedHqBm == null || mSharedHqBm.getWidth() != parent.getWidth() || mSharedHqBm.getHeight() != parent.getHeight())
41
mSharedHqBm = Bitmap.createBitmap(parent.getWidth(), parent.getHeight(), Bitmap.Config.ARGB_8888);
42
43
pageView = new MuPDFPageView(mContext, mFilePickerSupport, mCore, new Point(parent.getWidth(), parent.getHeight()), mSharedHqBm);
44
} else {
45
pageView = (MuPDFPageView) convertView;
46
}
47
48
PointF pageSize = mPageSizes.get(position);
49
if (pageSize != null) {
50
// We already know the page size. Set it up
51
// immediately
52
pageView.setPage(position, pageSize);
53
} else {
54
// Page size as yet unknown. Blank it for now, and
55
// start a background task to find the size
56
pageView.blank(position);
57
AsyncTask<Void,Void,PointF> sizingTask = new AsyncTask<Void,Void,PointF>() {
58
@Override
59
protected PointF doInBackground(Void... arg0) {
60
return mCore.getPageSize(position);
61
}
62
63
@Override
64
protected void onPostExecute(PointF result) {
65
super.onPostExecute(result);
66
// We now know the page size
67
mPageSizes.put(position, result);
68
// Check that this view hasn't been reused for
69
// another page since we started
70
if (pageView.getPage() == position)
71
pageView.setPage(position, result);
72
}
73
};
74
75
sizingTask.execute((Void)null);
76
}
77
return pageView;
78
}
79
}
80
81