我的首个电子书软件--嘎嘎读书 的开发(三)
来源:互联网 发布:飞鸽传书网络打印机 编辑:程序博客网 时间:2024/05/21 06:17
接上篇,这篇文章接着介绍书架页,不过附带将菜单页也一起说了吧,毕竟两个页面功能是在一起的。大家一定体验过一些软件的侧边栏效果,比如人人网客户端 百度美拍等等。我就仿照做了这样一个效果。效果图如下哦~
上篇文章中,关于书架的布局其实只是这个页面布局的一部分,其实另一部分就是图上显示的左大半边的菜单布局,布局还比较简单,就是用相对布局,将上篇讲到的书架布局和菜单布局叠加在一起,然后触发显示菜单请求的时候做一个平移的线性动画效果,将上层的书架布局移动到菜单布局的右侧。当触发隐藏菜单请求的时候 再做一个平移线性动画效果,将书架布局还原。下面是完整的首页布局文件。
外层RelativeLayout 中有两个 LinearLayout 第一个就是底层的菜单布局 包含上面一张装饰图片,还有下方的菜单列表,当然是listview。 第二个就是昨天已经看到的书架的布局。接下来我先分别介绍一下书架 和 菜单的内容实现,最后来说怎么添加动画效果。
书架有了布局之后,主要是如何组装listview,这里当然是要自定义一个adapter,并构建一个和图形界面对应的数据结构,我们发现一行有三本书,可缺省,所以我们把原先封装好的Bookbean进行组合,三个bookBean组成一组,作为书架一行所对应的数据模型,我定义这个模型为BookShelfBean:
而在activity中 则需要一个和listview绑定的list 里面的元素都是 BookShelfBean类型 即private List<BookShelfBean> bookshelfBeanList;然后建立一个内部的Adapter 绑定listView ,我编写的Adapter 类 如下,我们知道每个adapter最重要的部分是 重写getView方法,大家可以分析一下我所编写的getView方法。
getView方法中,首先取出对应的bookshelfbean,然后遍历出左中右的bookbean,根据bookbean的信息,改变item布局中对应部分的图片,以及事件绑定等。bookbean中存在一个特殊的的bookbean对象,这个对象不是真正的书籍,而是放在书籍最后的一个加号图片,这个特殊的bookbean是在初始化bookshelfBeanlist时当书架系统中最后一本书之后加入这本特殊的“书”。
listview绑定此adapter后,就会出现第一篇文章中展示的书架情形,只是,应该只有那个加号的图片,因为我们书架系统中还没有图书,不过,我们会在以后添加书籍进去,现在,先想象一下以后的样子吧。
接下来是菜单页。菜单页是整个软件的导航,从这个页面可以链接入所有其他页面。菜单列表我选用在asset文件夹下的一个文件配置,先展示下这个文件。
从这个文件可以看出,其实是用json格式配置的一个列表的基本信息,每个item对应的显示名,链接的activity 还有传递的参数。通过解析这个文件 我们可以初始化与菜单列表的listview绑定的数据list 我称为tabHostMsgBeanList。内部放置的元素为TabHostMsgBean,这个类是单个菜单元素对应的数据模型:
当然,我们同样需要一个adapter绑定此listview,不过这个相对比较简单,就不多说了。
如此一来菜单页也成型,是不是没有什么复杂的技术呀?哈哈,android就这么简单,除了......调页面ui TMD比较麻烦。同感的举手。
接下来是最重要的部分之一,就是制作侧边栏的效果。这里需要引入的知识点是关于 Animation的,如果不太熟悉这个知识的同学先去度娘一下吧,或者看接下来我代码片段中,能看懂也行,哈哈。
appLayout 就是书架布局部分,绑定一个事先设计好的动画,比较重要的一点是,在动画结束的时候,需要调用 appLayout.layout方法,来重写绘制layout的焦点,不然会出现的情况是,书架看起来跑到一边去了,但按钮 书架上的书籍 等控件触发事件的位置还在原先的位置。这是查了好多资料才看到的,这里写出来分享给大家,我可很无私的哟!哈哈
啰啰嗦嗦讲了这么多,大家肯定觉得烦了,我下面会将书架页对应的activity的完整代码贴出来。大家不懂的地方就研究下面的代码好了,上面讲的都是一些基础的东西,有些细节的地方自然没有说到。
细心的读者应该发现 这个activity并不是继承自app activity类 而是 ActivityGroup类,这个地方也是必须的,至于原因,我给忘记了哟,但是我确定这个地方必须使用 ActivityGroup不然真的有问题,大家可以实验一下,然后告诉我为什么一定要用 ActivityGroup哦!哈哈,偷下懒~
好了!终于啰嗦完了,可能还有地方说的不清楚,但就我这语文水平真的已经尽力了,如果大家有任何问题都可以给我留言,我有空一定会回复!下一篇文章我们来讲介绍页,我称为“随便看看”页,哈哈~
0 0
- 我的首个电子书软件--嘎嘎读书 的开发(三)
- 我的首个电子书软件--嘎嘎读书 的开发(一)
- 我的首个电子书软件--嘎嘎读书 的开发(二)
- 我的首个电子书软件--嘎嘎读书 的开发(四)
- 我的首个电子书软件--嘎嘎读书 的开发(五)
- 我的首个电子书软件--嘎嘎读书 的开发(六)
- 我的首个电子书软件--嘎嘎读书 的开发(七)
- 我的首个电子书软件--嘎嘎读书 的开发(八)
- 我读书(包括电子书)的方法
- 我的大学生活写真(嘎嘎)
- 我开发的首个软件系统
- 我开发的第一个Android软件
- 我开发的第二个Android软件
- 我开发的一个电子书管理器
- 开发的斗地主截图.嘎嘎
- 软件开发这点事儿:软件开发工具手册(奋斗的小鸟)_PDF 电子书
- 我的j2me 创意 手机电子书阅读软件基本框架
- 阿斯顿发的嘎嘎的
- 网站性能测试
- Android按下back键非退出隐藏到后台
- Android文档学习08_自定义view
- telnet 的工作过程 以及在ubuntu操作系统下安装Telnet客户端程序
- 带时间的日期选择web控件
- 我的首个电子书软件--嘎嘎读书 的开发(三)
- ZIp 解压
- Ubuntu汉化
- android动态布局方法小结
- poj 1154
- Opengl ES 2.0 简单的纹理范例 iOS
- oracle job详解
- cmd使用
- C#完整的通信代码(点对点,点对多,同步,异步,UDP,TCP)