我想要当前 X& Y 在活动的 onCreate 上的ImageView坐标,是否有相同的解决方案?请分享您的想法。
答案 0 :(得分:1)
实际上,当你致电setContentView()
时,Android坚果壳会启动绘制在表面上的视图,使用viewTrewwObserve
时可以观察到这一点因此无法获得ImageView
的高度和宽度onCreate()
目前尚未提取。
你可以使用,(未尝试过)
imageView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Get ImageView height width here <------------
}
});
当视图树中的全局布局状态或视图的可见性发生变化时,它将注册要调用的回调。
<强>更新强>
或者您可以使用onWindowFocusChanged (boolean hasFocus)
。
这是该活动对用户是否可见的最佳指标。默认实现清除密钥跟踪状态,因此应始终调用。
答案 1 :(得分:0)
(1)您可以使用getViewTreeObserver()
或(2)获取onCreate()
@Override
protected void onCreate(Bundle savedInstanceState)
{
//SIMPLY CALL YOUR ASYN TASK WITH DELAY OVER HERE LIKE THIS.
new MyImageDrawClass().execute();
}
class MyImageDrawClass extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
try
{
Thread.sleep(100);
}
catch(InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result)
{
LayoutParams lp = mContent.getLayoutParams();
value_wdth = mContent.getWidth();
value_hght = mContent.getHeight();
//PERFORM YOUR OTHER DRAWING STUFF..
super.onPostExecute(result);
}
}
如果您发现此问题,请告诉我们,您还可以将时间延迟缩短为Thread.sleep(10);
我通常使用这种方法来获得高度并获得宽度。