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

Android兑现书籍翻页效果-扩展版

2012-08-08 
Android实现书籍翻页效果--扩展版最近由于需要实现Android上的书籍翻页效果,于是就在CSDN上找到了何明桂(h

Android实现书籍翻页效果--扩展版

最近由于需要实现Android上的书籍翻页效果,于是就在CSDN上找到了何明桂(http://blog.csdn.net/hmg25)的一个系列文章,在此感谢大神的无私奉献。具体原理何大神已经将的很清楚了,具体请看

Android 实现书籍翻页效果----原理篇

Android 实现书籍翻页效果----完结篇

Android 实现书籍翻页效果----升级篇

Android 实现书籍翻页效果---番外篇之光影效果

在此基础上我做了一些修改,

1、将其改写为一个FrameLayout,可以通过BaseAdapter添加其他的布局文件;

2、从中间分页,采用两页的结构;

效果如下

Android兑现书籍翻页效果-扩展版

具体的思路还是通过计算翻页过程中各个视图的显示区域,然后控制canvas的绘制过程。何大神实现了将文字转化为相应的图片,之后交给canvas绘制在屏幕上。那么控件或者布局该如何绘制呢?其实控件和布局本质都是view,他们的绘制过程最终都是通过canvas的draw方法绘制在屏幕上的,而且view的绘制是通过调用draw(canvas)方法实现,(view视图绘制原理请看->http://blog.csdn.net/qinjuning/article/details/7110211),因此就可以通过控制canvas来绘制不同的显示区域。

分析一下:

首先,FramLayout绘制过程会调用onDraw(),在onDraw里会调用dispatchDraw()用于绘制子视图,在dispatchDraw里又会调用drawChild()来分别绘制各个子视图,因此我们需要在这里控制一下canvas。

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubViewGroup layout;if(convertView == null) {//convertView即传入的当前要改变内容的视图,这里判断是否已创建layout = (ViewGroup) inflater.inflate(R.layout.item_layout, null);//创建实例} else {layout = (ViewGroup) convertView;//复用实例}setViewContent(layout, position);//这里来改变现实内容return layout;}
这样就会产生2点限制,1、不同页的内容结构是必须是一样的,也就是用的同一个布局;2、baseAdapter的getview方法需要对convertView进行判断是否进行复用。

示例Demo源码下载->http://download.csdn.net/detail/xu_fu/4443142

热点排行