首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 翻页卷曲成效 电子书翻页

2012-08-25 
android 翻页卷曲效果 电子书翻页转载请注明来自:?5进制空间-android区相信做电子书的同学,都遇到过翻页动

android 翻页卷曲效果 电子书翻页

转载请注明来自:?5进制空间-android区

相信做电子书的同学,都遇到过翻页动画的需求吧,如果你不满足与点击滑动翻页的话,这边文章应该能够帮助到你。


先上个效果图:

android 翻页卷曲成效 电子书翻页
android 翻页卷曲成效 电子书翻页



效果还是很不错的,不过与ibook那个效果比起来,还是有差距的。应为这个没用到openGL做3D效果,只是用的2d的canvas画布去画的view,添加了阴影效果,还是挺有立体感的。而且比较流畅。openGL实现肯定效果会更好,不过就我目前的技术实力,实现希望还是渺茫的。

废话少说,还是上代码吧:

这里需要两个UI的view类和一个使用方法的demo。
第一个pageTurnerView.java:

?

第二个view类pageView.java:

public class PageViewP1 extends RelativeLayout {public static final int CORNER_BOTTOM_LEFT = 0;public static final int CORNER_BOTTOM_RIGHT = 1;public static final int CORNER_TOP_LEFT = 2;public static final int CORNER_TOP_RIGHT = 3;private Path mClipPath;private PageTurnerViewP1 mPageTurner;private Callback mCallback;private int mCorner;private Drawable mBackPage;private Drawable mPageBackground; public PageViewP1(Context context) {super(context);} public PageViewP1(Context context, AttributeSet attrs ) {super(context, attrs ); this.mBackPage =this.getBackground();this.mCorner = -1;} void setPageTurner(PageTurnerViewP1 pageTurnerViewP1) {this.mPageTurner = pageTurnerViewP1;} void setClipPath(Path clipPath) {this.mClipPath = clipPath;} public void setCallback(Callback callback)  {this.mCallback = callback;} void drawBackPage(Canvas canvas) {   if (this.mCallback != null)   this.mCallback.onDrawBackPage(canvas);} void drawBackground(Canvas canvas) {if (this.mCallback != null)this.mCallback.onDrawBackground(canvas);} public void startPageTurn() {if (this.mPageTurner != null)this.mPageTurner.startPageTurn(0);} void onPageTurnFinished(Canvas canvas) {this.mCallback.onPageTurnFinished(canvas);this.mClipPath = null;} protected void dispatchDraw(Canvas canvas) {if (this.mClipPath != null) {canvas.save();canvas.clipPath(this.mClipPath, Region.Op.INTERSECT);}super.dispatchDraw(canvas);if (this.mClipPath != null)canvas.restore();} public void setCorner(int corner) {this.mCorner = corner;} public int getCorner() {return this.mCorner;} public void setBackPage(Drawable backPage) {this.mBackPage = backPage;} public Drawable getBackPage() {return this.mBackPage;} public void setPageBackground(Drawable background) {this.mPageBackground = background;} public Drawable getPageBackground() {return this.mPageBackground;} public static abstract class Callback {public void onDrawBackPage(Canvas canvas) {Log.v("Callback", "drawing back page");}public void onDrawBackground(Canvas canvas) {Log.v("Callback2", "drawing back page");}public void onPageTurnFinished(Canvas canvas) {Log.v("Callback3", "drawing back page");}}}
? ? ??转载请注明来自:?5进制空间-android区

如果这两个view类没研究明白怎么用的话,可以去android 翻页卷曲效果里面寻找获取pageDemo.java,获得使用方法。

热点排行