作者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://webptt.com/cn.aspx?n=bbs/AndroidDev/M.1416277667.A.071.html
※ 编辑: AlphaCall (61.30.23.161), 11/18/2014 13:25:23
1F:推 tac0wu: 不太清楚你的宽高是啥 如果是view的 在onSizeChanged做 11/18 22:49
2F:→ tac0wu: onDraw 就是正在画 如果硬体加速开启的话你就是在产生 11/18 22:49
3F:→ tac0wu: displayList 11/18 22:49
4F:推 baobomb: 取得View 的 size 的时机 是在他被完整描绘在Parent view 11/19 21:25
5F:→ baobomb: 之後 才有办法取得 除非你自己重写ViewGroup 从onMeasure 11/19 21:26
6F:→ baobomb: 取得计算出来的Size 11/19 21:26
7F:→ baobomb: 才有办法在还没有被描绘出来前就取得计算完毕的宽高 11/19 21:27