弹性Android ListView控件的实现

zhongyx

贡献于2011-07-03

字数:1419 关键词: Android开发 移动开发

弹性ListView控件的实现 功能: 实现一个像Iphone 上的弹性ListView , 当该ListView 处于最顶端时可以向下拖动,但释放后会以先加速后减速的速度弹回顶端, 同理, 当该ListView 处于最底端的时候也可以向上拖动,. 如果该ListView不是最低或最顶, 则是正常的拖动滚动条 大致效果如下: 实现方式其实是很简单的, 只是通过继承ListView 并截获onTouch事件, 在onTouch里面做逻辑处理. 这里我就把程序中加减速的代码贴上来,大家可以稍微看一下, 里面的一些算法公式是固定的, 没有什么可变性. 以上mStartX. ,mStartY 表示的是该控件的初始位置 mFinalX, mFinalY 表示的是要该控件移动到的位置 mDeltaY 表示的是该控件的偏移量 mDurationReciprocal 是表示一个时间常量的倒数, 具体在下面会用到 timePassed 表示该控件已运动的时间 DURATION 表示总的运动时间,可自行设定, 默认我设了250 AccelerateDecelerateInterpolator 类是系统的加减速, 其中getInterpolation()方法能返回一个具有cos曲线变化的数值 ,由此实现一个加减速效果, 此方法是主要算法之一,有系统实现.( 如果你不想有加减速效果, 那你可以任意替换为Interpolator子类中其他类型); 具体用法只需要将工程中的StretchListView和StretchScroll.java两个文件靠到需要的工程目录下, 如例子拷到 com.nd.test.sample 下, 那么在.xml中, 替换原来的ListView 如下: 至于xml的属性是完全跟ListView一样. 不再赘述 目前缺点: 还不够自由和弹性 有兴趣的就看看工程吧, 没有的可直接跳过. (双击以下可得, 如有问题请与我联系) ViewStub 控件的应用 已经知道怎么用的同学就可以关闭doc文档了. 以下例子是在来电秀使用过ViewStub 的界面 , 这里要赞一下明礼的悬浮框显示流量统计控件, 很好很强大, 这样能让用户准确知道自己的流量都用在哪里了... 在我看来, ViewStub 控件可以用来解决如何将多个.xml 文件关联起来, 如何相互嵌套.xml文件的问题. 举例子: 现有a.xml 和 b.xml 两个布局文件, 如果现在界面需要这两个布局同时一起显示, 现有方法: 1. 我们可以在java程序中动态来加入, 但是这样就缺失了Android的特点, 界面的灵活性, 2 , 我们可以把b.xml文件中的布局完全移植到a.xml中, 当然这种方法是可行的, 如果对于两个布局文件都不复杂并在其他界面没有重用性的话, 我们应该使用这种, 但是如果遇到布局代码比较冗长, 或者其他界面也会用b.xml的布局, 我们这样写就会导.xml 代码非常难看懂, 而且会浪费资源 如果用了ViewStub 控件就可以解决以上问题了 具体以下代码给出, 为了方便, 例子我选择了最简单的布局, 可能不能完全表现出ViewStub 优点, 这里意在应用: Layout 文件中有a.xml 代码如下: b.xml 文件代码如下: 这样就实现了将b.xml中的内容放到a.xml中显示了, 我们仅仅要做的就是在Activity中添加 为什么要有后面这两句呢, 因为默认ViewStub的状态是”gone”, 只有经过这两句的调用方可显示, 最后效果如下: 有兴趣的就看看工程吧, 没有的可直接关闭文档. (双击以下可得, 如有问题请与我联系)

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 20 金币 [ 分享文档获得金币 ]
3 人已下载

下载文档

相关文档