[问题] 请教 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