当前位置: 编程技术>移动开发
android书架效果实现原理与代码
来源: 互联网 发布时间:2014-10-12
本文导语: 以前也模仿者ireader实现了书架的效果,但是那种是使用listview实现的,并不好用。绝大多数都是用gridview实现的,网上这方面资料比较少,有些开源的电子书都是重点做了阅读,并没有像ireader和QQ阅读这样的书架效果。 书架这...
以前也模仿者ireader实现了书架的效果,但是那种是使用listview实现的,并不好用。绝大多数都是用gridview实现的,网上这方面资料比较少,有些开源的电子书都是重点做了阅读,并没有像ireader和QQ阅读这样的书架效果。
书架这种效果我早就实现了,本来想做一个完美的电子书,但是因为自己的懒惰,仅仅持续了一两天,今天又找到了以前的代码分享出来,希望大家能一起实现一个比较完美的开源的电子书。废话不多说先看下效果:
本地部分还没有做,做好以后就可以吧本地的书加载到书架里了,这只是一个开始,后面还有很多复杂的没有做。
下面先看一下书架的实现原理吧!
首先看一下layout下的布局文件main.xml
上面是个自定义的gridview主要来实现书架,因为每一本书是一个item,在自定义的gridview中计算每一行的高度,然后把书架画上去。下面是个抽屉。
publicclassMyGridViewextendsGridView{
privateBitmapbackground;
publicMyGridView(Contextcontext,AttributeSetattrs){
super(context,attrs);
background=BitmapFactory.decodeResource(getResources(),
R.drawable.bookshelf_layer_center);
}
@Override
protectedvoiddispatchDraw(Canvascanvas){
intcount=getChildCount();
inttop=count>0?getChildAt(0).getTop():0;
intbackgroundWidth=background.getWidth();
intbackgroundHeight=background.getHeight()+2;
intwidth=getWidth();
intheight=getHeight();
for(inty=top;y
Android增量升级的方法和原理详细介绍
android Setting中隐藏项实现原理与代码
android开机自启动原理与实现案例(附源码)
android IntentService实现原理及内部代码分享
Android裁剪图片为圆形图片的实现原理与代码
解析android 流量监测的实现原理
Android系统开发中log的使用方法及简单的原理
Android应用图标在状态栏上显示实现原理
Android基站定位原理及实现代码
Android在listview添加checkbox实现原理与代码
android开发之蜂鸣提示音和震动提示的实现原理与参考代码
android 键盘事件和屏幕事件的运行原理及交互实现
Android仿UC底部菜单栏实现原理与代码
android:照片涂画功能实现过程及原理详解
Android检测Cursor泄漏的原理以及使用方法
android底部菜单栏实现原理与代码
Android 进程间通信实现原理分析
Android 操作系统获取Root权限 原理详细解析
android 大图片拖拽并缩放实现原理
书架这种效果我早就实现了,本来想做一个完美的电子书,但是因为自己的懒惰,仅仅持续了一两天,今天又找到了以前的代码分享出来,希望大家能一起实现一个比较完美的开源的电子书。废话不多说先看下效果:
本地部分还没有做,做好以后就可以吧本地的书加载到书架里了,这只是一个开始,后面还有很多复杂的没有做。
下面先看一下书架的实现原理吧!
首先看一下layout下的布局文件main.xml
代码如下:
上面是个自定义的gridview主要来实现书架,因为每一本书是一个item,在自定义的gridview中计算每一行的高度,然后把书架画上去。下面是个抽屉。
代码如下:
publicclassMyGridViewextendsGridView{
privateBitmapbackground;
publicMyGridView(Contextcontext,AttributeSetattrs){
super(context,attrs);
background=BitmapFactory.decodeResource(getResources(),
R.drawable.bookshelf_layer_center);
}
@Override
protectedvoiddispatchDraw(Canvascanvas){
intcount=getChildCount();
inttop=count>0?getChildAt(0).getTop():0;
intbackgroundWidth=background.getWidth();
intbackgroundHeight=background.getHeight()+2;
intwidth=getWidth();
intheight=getHeight();
for(inty=top;y