如何使用
首先你需要創建Pager實例,並添加到佈局中
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
screenWidth = displayMetrics.widthPixels;//獲取屏幕的寬度
screenHeight = displayMetrics.heightPixels;
pager = new Pager(this, screenWidth, screenHeight);
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
addContentView(pager, layoutParams);//將pager添加到佈局中
Pager是核心代碼,由它來控制手勢實現翻書的。
- 分別創建倆組Bitmap、canvas。代表當前頁和下一頁的
mCurPageBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);
mNextPageBitmap = Bitmap.createBitmap(screenWidth, screenHeight, Bitmap.Config.ARGB_8888);
mCurPageCanvas = new Canvas(mCurPageBitmap);
mNextPageCanvas = new Canvas(mNextPageBitmap);
pager.setBitmaps(mCurPageBitmap, mCurPageBitmap);//設置bitmap到pager中,初始時可以都設置成當前的bitmap
- 讓Pager監聽手
pager.setOnTouchListener(new View.OnTouchListener() {
// private int count = pages.length;
// private int currentIndex = 0;
// private int lastIndex = 0;
// private Bitmap lastBitmap = null;
@Override
public boolean onTouch(View v, MotionEvent e) {
boolean ret = false;
if (v == pager) {
if (e.getAction() == MotionEvent.ACTION_DOWN) {
pager.calcCornerXY(e.getX(), e.getY());//獲得觸碰的起始點位置,用於判斷向左翻還是向右翻。
// lastBitmap = currentBitmap;
// lastIndex = currentIndex;
//
// pagerFactory.onDraw(mCurPageCanvas, currentBitmap);
// if (pager.DragToRight()) { // 向右滑動,顯示前一頁
// if (currentIndex == 0) return false;
// pager.abortAnimation();
// currentIndex--;
// loadImage(mNextPageCanvas, currentIndex);
// } else { // 向左滑動,顯示後一頁
// if (currentIndex + 1 == count) return false;
// pager.abortAnimation();
// currentIndex++;
// loadImage(mNextPageCanvas, currentIndex);
// }
} else if (e.getAction() == MotionEvent.ACTION_MOVE) {
} else if (e.getAction() == MotionEvent.ACTION_UP) {
// if (!pager.canDragOver()) {
// currentIndex = lastIndex;
// currentBitmap = lastBitmap;
// }
}
ret = pager.doTouchEvent(e);
return ret;
}
return false;
}
});
未註釋的部分是必須要有的。
- 加載圖片
pagerFactory = new PagerFactory(getApplicationContext());
private void loadImage(final Canvas canvas, int index) {
Bitmap bitmap = getBitmap(pages[index]);
currentBitmap = bitmap;
pagerFactory.onDraw(canvas, bitmap);
pager.setBitmaps(mCurPageBitmap, mNextPageBitmap);
pager.postInvalidate();
}
PagerFactory是用於渲染Bitmap的。
- 加載第一張圖片
loadImage(mCurPageCanvas, 0);