android 幻灯片效果之百叶窗

浏览:
字体:
发布时间:2013-12-17 09:37:34
来源:

实现原理:

使用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


>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();