[問題] 請教 OnDraw 的時機

看板AndroidDev作者 (阿伐扣)時間9年前 (2014/11/18 10:27), 9年前編輯推噓2(205)
留言7則, 2人參與, 最新討論串1/1
想請教各位前輩, 最近練習一個程式 動作大概是按下某個按鈕後會隨機取得圖片位置 然後切換圖片並做旋轉. 我本來是用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

11/18 22:49, , 1F
不太清楚你的寬高是啥 如果是view的 在onSizeChanged做
11/18 22:49, 1F

11/18 22:49, , 2F
onDraw 就是正在畫 如果硬體加速開啟的話你就是在產生
11/18 22:49, 2F

11/18 22:49, , 3F
displayList
11/18 22:49, 3F

11/19 21:25, , 4F
取得View 的 size 的時機 是在他被完整描繪在Parent view
11/19 21:25, 4F

11/19 21:26, , 5F
之後 才有辦法取得 除非你自己重寫ViewGroup 從onMeasure
11/19 21:26, 5F

11/19 21:26, , 6F
取得計算出來的Size
11/19 21:26, 6F

11/19 21:27, , 7F
才有辦法在還沒有被描繪出來前就取得計算完畢的寬高
11/19 21:27, 7F
文章代碼(AID): #1KQgwZ1n (AndroidDev)