android 幻灯片效果之百叶窗

本文介绍如何在Android中实现百叶窗效果的幻灯片动画,利用SurfaceView不断重绘达成视觉效果。文章包含实现原理概述及关键代码展示。
摘要由CSDN通过智能技术生成

实现原理:

使用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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值