[問題]Android 繪製的機制疑問

看板AndroidDev作者 (薯)時間13年前 (2012/03/21 19:07), 編輯推噓3(3011)
留言14則, 3人參與, 最新討論串1/1
最近在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

03/21 22:51, , 1F
你要不要考慮說一下你真正想做的是啥啊?
03/21 22:51, 1F

03/21 22:52, , 2F
一直invalid就跟做遊戲的原理一樣啊
03/21 22:52, 2F

03/21 22:52, , 3F
真的要看怎麼畫就看onDraw吧
03/21 22:52, 3F

03/21 23:33, , 4F
android的圖形系統是有點復雜,app->view->surface(client)
03/21 23:33, 4F

03/21 23:35, , 5F
->surfaceflinger(server)->opengl->framebuffer,大體上這
03/21 23:35, 5F

03/21 23:35, , 6F
樣一條線路,更上層的draw就不說了。surface有java和c
03/21 23:35, 6F

03/21 23:37, , 7F
層,是C/S結構,我曾改過surfaceflinger的代碼,稍微研究過
03/21 23:37, 7F

03/21 23:38, , 8F
一點。建議你先從架構了解android圖形系統,再從上到下,從
03/21 23:38, 8F

03/21 23:39, , 9F
java到C層trace一下啊。
03/21 23:39, 9F
我想做的是一個轉動選單的介面 感覺是類似gallery http://www.youtube.com/watch?v=3UsPer9c5bg
實際上是這樣 http://www.badongo.com/pic/15203046 我不打算用finger滑動 我只希望按上下可以像影片那樣很滑順地滑動一格一格 ※ 編輯: liu2007 來自: 106.1.104.75 (03/22 00:35)

03/22 00:32, , 10F
不就是一個計算完delta以後代給trackMotionScroll
03/22 00:32, 10F

03/22 00:33, , 11F
trackMotionScroll會在call invalidate
03/22 00:33, 11F

03/22 00:33, , 12F
facing說的那些東西 除非你對invalidate之後的東西有興趣
03/22 00:33, 12F

03/22 00:33, , 13F
不然不知道也沒差
03/22 00:33, 13F

03/22 08:27, , 14F
我的預期就跟樓上一樣,其實你要的跟你問的不一樣
03/22 08:27, 14F
文章代碼(AID): #1FQRP_K4 (AndroidDev)