[問題] 請教 OnDraw 的時機

作者: AlphaCall (阿伐扣)   2014-11-18 10:27:43
想請教各位前輩, 最近練習一個程式
動作大概是按下某個按鈕後會隨機取得圖片位置
然後切換圖片並做旋轉.
我本來是用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
作者: tac0wu (在BBS中流浪)   2014-11-18 22:49:00
不太清楚你的寬高是啥 如果是view的 在onSizeChanged做onDraw 就是正在畫 如果硬體加速開啟的話你就是在產生displayList
作者: baobomb (baobomb)   2014-11-19 21:25:00
取得View 的 size 的時機 是在他被完整描繪在Parent view之後 才有辦法取得 除非你自己重寫ViewGroup 從onMeasure取得計算出來的Size才有辦法在還沒有被描繪出來前就取得計算完畢的寬高

Links booklink

Contact Us: admin [ a t ] ucptt.com