在创建活动后,我正在尝试将动画应用到我的Android应用中的视图.为此,我需要确定视图的当前大小,然后设置动画以从当前大小缩放到新大小.此部分必须在运行时完成,因为视图根据用户的输入缩放到不同的大小.我的布局是用XML定义的.
这似乎是一件容易的事,虽然没有一个能解决我的问题,但很多问题都存在.所以也许我错过了一些明显的东西.我通过以下方式了解了我的观点:
ImageView myView = (ImageView)getWindow().findViewById(R.id.MyViewID);
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但打电话时getWidth(),getHeight(),getMeasuredWidth(),getLayoutParams().width,等,他们都返回0.我也试过手动调用measure()视图上,然后到一个呼叫getMeasuredWidth(),但没有效果.
我已经尝试调用这些方法并在我的activity onCreate()和in中检查调试器中的对象onPostCreate().如何在运行时确定此视图的确切尺寸?
我知道对放置进行视图大小计算是不受欢迎的.Android布局管理器应正确放置所有视图.但是,在某些合理的情况下,应该进行某种计算以提供提示(例如,GridView中的列数或调整文本视图的大小以允许在一行中显示最少数量的字符).对于这些情况,我想获得相关的视图宽度/高度信息或字体宽度/高度/等.但是getWidth()/ getHeigth()/ etc调用永远不会返回有效值,除非视图已在显示时呈现,但后来是迟到.这是一个陷阱22的情况.我想知道是否有某些方法我没有找到(android api很难理解我的全部内容),这使得我上面描述的内容成为可能.