运用贝塞尔曲线描绘android翻页效果
来源:互联网 发布:重返十七岁电影知乎 编辑:程序博客网 时间:2024/06/09 08:43
如何使用
首先你需要创建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;@Overridepublic 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);
demo下载http://download.csdn.net/detail/qq_35549248/9849843
阅读全文
1 0
- 运用贝塞尔曲线描绘android翻页效果
- 贝塞尔曲线与翻页效果
- 2014-11-6Android学习------Android 仿真翻页效果实现--------贝塞尔曲线(二)
- 2014-11-8Android学习------Android 仿真翻页效果实现原理学习--------贝塞尔曲线(三)
- Android学习小Demo(4)贝塞尔曲线跟翻页效果
- Android学习小Demo(4)贝塞尔曲线跟翻页效果
- Android学习小Demo(4)贝塞尔曲线跟翻页效果
- Android翻页效果原理实现之曲线的实现
- Android翻页效果原理实现之曲线的实现
- Android翻页效果原理实现之曲线的实现
- Android翻页效果原理实现之曲线的实现
- Android贝塞尔曲线运用-圆形水波进度
- Android翻页效果原理实现之曲线的实现 分类: Custom My Love
- 自定义View很简单 - Android翻页效果原理实现之曲线的实现
- Android 翻页效果 电子书
- android手势翻页效果
- Android翻页效果
- Android电子书翻页效果
- 使用JAVA线程写的一个UDP简易通讯程序(三)
- 对泰坦尼克号案例进行数据挖掘
- python hashlib sha1和MD5哈希算法
- android performClick使用说明
- android studio编译的时候提示gradle版本不对
- 运用贝塞尔曲线描绘android翻页效果
- Count on a tree SPOJ
- C++更改文件名
- PHP$a[]和$a的区别
- CentOs6.7 + hadoop2.8 安装
- Android开发之实现滑动RecyclerView,浮动按钮的显示和隐藏(一)
- 关于e瞳网社团web后端部门发展的一点想法
- zookeeper的重连思考
- 我的大学