作者liu2007 (薯)
看板AndroidDev
标题[问题]Android 绘制的机制疑问
时间Wed Mar 21 19:07:37 2012
最近在trace android.widget.Gallery 的source code
很想知道那滑顺的移动图案是怎麽做出来的
结果发现Gallery 里的
FlingRunnable 里的
Scroller是一个关键
可是点进去看Scroller的source code却发现里头只有一堆数字在做运算
跟绘图一点关系都没有
不甘心又回去找Gallery所继承的父类别方法
不是呼叫父类别的方法
要不然就是修改一些variable
或者是增减自己的array的东西而已
却还是找不到View真正画上绘画的方法
找到後来
从子类别方法trace上来的父类别方法最後都鬼隐断头了
後来我问我同学
他说Android的绘图有一个类似Listener的东西
专门监视萤幕上的物件的资料结构是否有所谓的变动
如果有
这个监视器就会触发绘画的方法真正去作绘画
为得就是让使用者只要focus在资料结构的maintain就好
另外他说android在绘画的底层是用C去包的
所以从Java trace到最後还是会看不见什麽时候画的
想请问各位高手们
我同学说的对吗??
是否有错误或是疏漏的吗??
--
If a child on the street who has nothing is willing to share,
why are we who have everything still so greedy?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.134.26.30
1F:→ lovelycateye:你要不要考虑说一下你真正想做的是啥啊? 03/21 22:51
2F:→ lovelycateye:一直invalid就跟做游戏的原理一样啊 03/21 22:52
3F:→ lovelycateye:真的要看怎麽画就看onDraw吧 03/21 22:52
4F:推 facing:android的图形系统是有点复杂,app->view->surface(client) 03/21 23:33
5F:→ facing:->surfaceflinger(server)->opengl->framebuffer,大体上这 03/21 23:35
6F:→ facing:样一条线路,更上层的draw就不说了。surface有java和c 03/21 23:35
7F:→ facing:层,是C/S结构,我曾改过surfaceflinger的代码,稍微研究过 03/21 23:37
8F:→ facing:一点。建议你先从架构了解android图形系统,再从上到下,从 03/21 23:38
9F:→ facing:java到C层trace一下啊。 03/21 23:39
我想做的是一个转动选单的介面
感觉是类似gallery
https://www.youtube.com/watch?v=3UsPer9c5bg
实际上是这样
http://www.badongo.com/pic/15203046
我不打算用finger滑动
我只希望按上下可以像影片那样很滑顺地滑动一格一格
※ 编辑: liu2007 来自: 106.1.104.75 (03/22 00:35)
10F:推 blooker:不就是一个计算完delta以後代给trackMotionScroll 03/22 00:32
11F:→ blooker:trackMotionScroll会在call invalidate 03/22 00:33
12F:→ blooker:facing说的那些东西 除非你对invalidate之後的东西有兴趣 03/22 00:33
13F:→ blooker:不然不知道也没差 03/22 00:33
14F:推 lovelycateye:我的预期就跟楼上一样,其实你要的跟你问的不一样 03/22 08:27