作者AlphaCall (阿伐扣)
看板AndroidDev
標題[問題] 請教 OnDraw 的時機
時間Tue Nov 18 10:27:43 2014
想請教各位前輩, 最近練習一個程式
動作大概是按下某個按鈕後會隨機取得圖片位置
然後切換圖片並做旋轉.
我本來是用ImageView直接旋轉, 但發現圖片會依照外框的大小
在旋轉的時後改變自己的大小, 後來有前輩建議用 Animation
我找到了 RotateAnimation (起始角度, 要旋轉的角度, X做標, Y做標)
因為我的圖片都是半圓例如 200 x 100, 但要讓他做圓的旋轉,
我就在設定完圖片 setImageResource 取 X做標 = width/2,
Y做標 = height 做正中心的旋轉, 但在此時, 我發現有時候
我取到的圖片尺寸是 0 x 0, 有時後會取到正確的尺寸,
我就在想是不是因為圖片還沒有載入, 我就取大小了, 所以會取到0, 0
我取圖片大小的方法是參考網路上說的 設定 inJustDecodeBounds = true;
然後把他寫成一個 imginfo 類別, 想請教有前輩遇過這個狀況嗎?
以上是一個問題, 另一個問題是, 我想說如果我把這段寫在onDraw裡面
去取圖片大小, 會不會比較正確, 所以想請教前輩, onDraw這個方法
會在甚麼時機被呼叫, 查到的資料好像都是在正要變更畫面的時後(變更前),
但都沒有看到過一個正確的流程圖, 所以想請教前輩, onDraw 是畫面正要變更前,
還是畫面已經完成變更會被調用, 謝謝前輩.
忘記貼上code, 補上code:
http://pastebin.com/8knzhRZR
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.30.23.161
※ 文章網址: http://www.ptt.cc/bbs/AndroidDev/M.1416277667.A.071.html
※ 編輯: AlphaCall (61.30.23.161), 11/18/2014 13:25:23
推 tac0wu: 不太清楚你的寬高是啥 如果是view的 在onSizeChanged做 11/18 22:49
→ tac0wu: onDraw 就是正在畫 如果硬體加速開啟的話你就是在產生 11/18 22:49
→ tac0wu: displayList 11/18 22:49
推 baobomb: 取得View 的 size 的時機 是在他被完整描繪在Parent view 11/19 21:25
→ baobomb: 之後 才有辦法取得 除非你自己重寫ViewGroup 從onMeasure 11/19 21:26
→ baobomb: 取得計算出來的Size 11/19 21:26
→ baobomb: 才有辦法在還沒有被描繪出來前就取得計算完畢的寬高 11/19 21:27