Android拾遗

学习&实践Android开发之中,发现了好多恶心问题啊 Mark一下~

Tread 的 Run 与 Start
在写ListView的时候,想通过新建一个线程来更新Adapter的数据,让此线程sleep 3000ms,再通过Handler返回UI线程进行更新,结果发现主UI线程也被睡了。。。研究了一晚上,终于发现我建立线程的时候,调用的是 Thread.run(); 此时主线程会等到新的线程执行完才会继续执行,囧。
应该调用Thread.start() 才对,这样会新开一个线程。

透明颜色
类似 AARRGGBB 的写法,我一直使用的是

@color/transparent = #00ffffff

设置了一个背景图,然后在ListView之中设定其

Divider = @color/transparent, CacheHintColor = @color/transparent,

结果发现在拖动的时候还是会有黑影出现,于是把颜色改成

@color/transparent = #00000000

这时候,拖动的时候倒没阴影了,但是Divider显示却出问题了,变成了后面ImageView的内容,最后只好折中,设置

Divider = #00ffffff, CacheHintColor = #00000000,

结果。。。奇迹般的没有问题了。。。。真心诡异啊

LayoutAnimation
在第一次给ListView设置Adapter时,可以设定LayoutAnimation给每个View进入加入一个动画。但是在之后,增加列表数据,并调用notifyDatasetChanged更新显示的时候,新加入的条目是不会以动画的形式加入的,实在无奈,只能自己写一个动画管理器了。
实现的思路是:ListView作为ViewGroup,取得其中的每一个View,而后设定Animation…..当然,这样有一个好处,就是可以控制每一个动画播放的时差,可以让动画越来越快~~

ListView中条目动画形式飞出
在设置了Animation之后,每一个条目会依据动画飞出,但是在动画结束之后,会原样重现在原先的列表中,没有办法,只能对每一个动画加载一个监听器,动画结束之后,调用 setVisibility(View.INVISIBLE),此时不能用View.GONE哦~GONE会释放这个列表所占用的位置,使得后面的列表项向前移一格

ListView的缓冲
Android默认的ListView居然没有缓动,也就是移到顶部或尾部的时候不会跟iOS一样象征性的继续滚动然后弹性恢复,而是直接就停住了。用户体验非常不爽,不过网上关于这个的教程也蛮多的~我就不啰嗦了~自行百度把

。。。。继续整理 挖掘Android的恶心问题。。。。。

填写留言

注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。

无觅相关文章插件,快速提升流量