运用贝塞尔曲线描绘android翻页效果(浏览图片时,图片间切换达到书本翻页的效果).

效果图:

如何使用首先你需要创建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是核心代码,由它来控制手势实现翻书的。

2. 分别创建俩组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

3. 让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;

}

});

未注释的部分是必须要有的。

4. 加载图片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的。

5. 加载第一张图片loadImage(mCurPageCanvas, 0);

android 图标切换动画效果,BezierCurve相关推荐

  1. android 背景切换动画效果代码,关于Android shape gradient背景渐变

    百度后,发现渐变色不仅可以根据xml来实现,也可以用java代码来实现,由于目前没有那么多时间,只记录xml实现的方法:以后在记录Java实现的代码. 通过Shape gradient标签来实现 首先 ...

  2. android 背景切换动画效果代码,在Android应用中以模糊效果设置背景图片

    我试图使列表视图上的背景图像模糊,但是我尝试按照教程进行操作,但它不起作用.任何人都请指教,谢谢. 主要活动 public class IngredientCategoryMain extends A ...

  3. Android 动画之View动画效果和Activity切换动画效果

    View动画效果: 1.>>Tween动画 通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节 ...

  4. android学习笔记---56_activity切换动画与页面切换动画,自定义activity窗口切换动画效果的实现.

    2013/5/17 Java技术qq交流群:JavaDream:251572072 56_activity切换动画与页面切换动画 ----------------------------------- ...

  5. android动画篇——仿小米计算器切换动画效果

    实现思路 此效果实现用到了:LayoutTransition和ObjectAnimator的相关知识 思路:当点击切换按钮时顶部ViewGroup和左侧ViewGroup可见性设置为Gone,并自动开 ...

  6. android+百叶窗动画效果,js实现横向百叶窗效果网页切换动画效果的方法

    本文实例讲述了js实现横向百叶窗效果网页切换动画效果的方法.分享给大家供大家参考.具体分析如下: 这是一款很简洁但是效果却不错的网页切换效果,点击新网页后,网页会出现蓝白相间的百叶窗线条自动切换,直到 ...

  7. Android中具有动画效果的图片资源

    Android动画和Transition系列文章 初识属性动画--使用Animator创建动画 再谈属性动画--介绍以及自定义Interpolator插值器 三谈属性动画--Keyframe以及Vie ...

  8. android activity切换动画

    今天,实在没有什么可以写的内容,在网上找了好久,才决定写今天的内容.自己还是想保持每天写博客的习惯. 在Android开发过程中,经常会碰到Activity之间的切换效果的问题,下面介绍一下如何实现左 ...

  9. android 应用切换动画,怎么在Android应用中利用Activity对动画进行切换

    怎么在Android应用中利用Activity对动画进行切换 发布时间:2020-11-27 16:19:53 来源:亿速云 阅读:107 作者:Leah 今天就跟大家聊聊有关怎么在Android应用 ...

最新文章

  1. 隐马尔科夫模型之Baum-Wech算法
  2. 他开发了 redux,昨晚“字节一面”却挂了?
  3. QT官方第三方开源工具
  4. https的那些事儿
  5. App市场的“繁荣”背后 隐藏令人唏嘘的真相
  6. iometer-2006_07_27.common-src编译
  7. windows分辨率修改工具_Windows 字体优化,这几个办法能帮你解决
  8. 8 大错误SQL用法,你肯定踩过坑!
  9. python增强对比度_python增加图像对比度的方法
  10. python类创建对象底层实现机制(简单)
  11. 1059: [ZJOI2007]矩阵游戏 - BZOJ
  12. 【问题记录】python 函数 传入一个对象返回一个对象值得注意
  13. android java 调试快捷键_最强Android studio 使用快捷键和调试技巧
  14. 游戏场景设计探究:冬夏季节光色模型
  15. Pycharm调试卡在“Collecting data...”
  16. 日期时间编辑器(模拟QDateTimeEdit的自定义控件)——QML
  17. Print Label with Barcode Using ZPLII
  18. 索骥馆-DIY硬盘之《新手3周学通硬盘芯片级维修》扫描版[PDF]
  19. 推荐系统架构及流程说明
  20. C++ API 设计 07 第二章

热门文章

  1. iphone如何手动验证校园网(针对认证网页无法认证的学校)
  2. nginx upstream配置aws alb域名导致timeout报错
  3. 2020笔记本性价比之王_7000左右的笔记本推荐(2020游戏本性价比之王)
  4. 恐怖黎明稳定服务器,《恐怖黎明》新人联机图文教程 怎么联机
  5. 4K显示器你听过,4k磁盘你听过吗?
  6. 0004有意思的小题目
  7. “南孔圣地;衢州有礼”城市品牌西安发布会
  8. mysql 数据库生命周期_MySQL生命周期
  9. 如何让小家电带电池设备快速充满电
  10. 技术人员要拿百万年薪,必须要经历这9个段位