android 幻灯片效果之百叶窗
实现原理:
使用SurfaceView一直重绘实现该动画效果
先看效果图:
代码实现:
1.幻灯片基类:
package com.open.turnpage;import android.graphics.Bitmap;import android.view.SurfaceHolder;/** * 幻灯片效果的接口 * @author admin * */public interface ITurnPage { public abstract void onCreate(); public abstract void onTurnPageDraw(SurfaceHolder holder,Bitmap[] bitmap,int maxWidth,int maxHeight); public abstract void onDestory();}
a.从左到右实现:
package com.open.turnpage;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Rect;import android.view.SurfaceHolder;/** * * @author admin * */public class ShutterLeft2Right implements ITurnPage { private int duration=350;//动画持续时间 private final int leafNum=5; private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); public ShutterLeft2Right() { // TODO Auto-generated constructor stub } @Override public void onCreate() { // TODO Auto-generated method stub } @Override public void onTurnPageDraw(SurfaceHolder holder, Bitmap[] bitmap, int maxWidth, int maxHeight) { int dx=(maxWidth-bitmap[0].getWidth())/2; int dy=(maxHeight-bitmap[0].getHeight())/2; int perWidth=maxWidth/leafNum; long start=System.currentTimeMillis(); long runMills=0; Rect src=new Rect(); Rect dst=new Rect(); Canvas canvas=null; boolean isRunning=true; while(isRunning) { isRunning=((runMills=(System.currentTimeMillis()-start))
b,从右边到左边:package com.open.turnpage;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Rect;import android.view.SurfaceHolder;/** * * @author admin * */public class ShutterRight2Left implements ITurnPage { private int duration=350;//动画持续时间 private final int leafNum=5; private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); @Override public void onCreate() { // TODO Auto-generated method stub } @Override public void onTurnPageDraw(SurfaceHolder holder, Bitmap[] bitmap, int maxWidth, int maxHeight) { int dx=(maxWidth-bitmap[0].getWidth())/2; int dy=(maxHeight-bitmap[0].getHeight())/2; int perWidth=maxWidth/leafNum; long start=System.currentTimeMillis(); long runMills=0; Rect src=new Rect(); Canvas canvas=null; boolean isRunning=true; while(isRunning) { isRunning=((runMills=(System.currentTimeMillis()-start))c,从上到下:
package com.open.turnpage;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Rect;import android.view.SurfaceHolder;/** * * @author admin * */public class ShutterUp2Down implements ITurnPage { private int duration=350;//动画持续时间 private final int leafNum=7; private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); public ShutterUp2Down() { // TODO Auto-generated constructor stub } @Override public void onCreate() { // TODO Auto-generated method stub } @Override public void onTurnPageDraw(SurfaceHolder holder, Bitmap[] bitmap, int maxWidth, int maxHeight) { int dx=(maxWidth-bitmap[0].getWidth())/2; int dy=(maxHeight-bitmap[0].getHeight())/2; int perHeight=maxHeight/leafNum; long start=System.currentTimeMillis(); long runMills=0; Rect src=new Rect(); Canvas canvas=null; boolean isRunning=true; while(isRunning) { isRunning=((runMills=(System.currentTimeMillis()-start))
d,从下到上:package com.open.turnpage;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PaintFlagsDrawFilter;import android.graphics.Rect;import android.view.SurfaceHolder;/** * * @author admin * */public class ShutterDown2Up implements ITurnPage { private int duration=350;//动画持续时间 private final int leafNum=7; private PaintFlagsDrawFilter pdf=new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG); public ShutterDown2Up() { // TODO Auto-generated constructor stub } @Override public void onCreate() { // TODO Auto-generated method stub } @Override public void onTurnPageDraw(SurfaceHolder holder, Bitmap[] bitmap, int maxWidth, int maxHeight) { int dx=(maxWidth-bitmap[0].getWidth())/2; int dy=(maxHeight-bitmap[0].getHeight())/2; int perHeight=maxHeight/leafNum; long start=System.currentTimeMillis(); long runMills=0; Rect src=new Rect(); Canvas canvas=null; boolean isRunning=true; while(isRunning) { isRunning=((runMills=(System.currentTimeMillis()-start)) demo代码参见 github:https://github.com/zz7zz7zz/android-turnpage csdn:http://download.csdn.net/detail/zz7zz7zz/6715605
>更多相关文章
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 05-06TCL科技:预计大尺寸面板价格上涨动能有望延
- 05-06新加坡电信Optus任命新首席执行官以重建品牌
- 05-06微软宣布为消费级用户账户提供安全密钥支持
- 05-06当好大数据产业“守门员”(筑梦现代化 共绘
- 04-29通用智能人“通通”亮相中关村论坛
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御