I want current X & Y co ordinates of an ImageView on onCreate of Activity, is there any solution for the same ? Please share your idea on same.
问问题
1700 次
2 回答
1
实际上,当您调用setContentView()
Android 简而言之,开始在表面上绘制视图,您可以在使用时观察到,viewTrewwObserve
因此您无法获得 in 的高度和宽度,ImageView
因为onCreate()
它当前尚未绘制。
您可以使用,(未尝试)
imageView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Get ImageView height width here <------------
}
});
当全局布局状态或视图树中视图的可见性发生变化时,它将注册一个要调用的回调。
更新:
或者你可以使用 onWindowFocusChanged (boolean hasFocus)
.
这是该活动是否对用户可见的最佳指标。默认实现清除密钥跟踪状态,因此应始终调用。
于 2013-02-05T12:00:01.160 回答
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);
我通常使用这种方法来获取高度和获取宽度。
于 2013-02-05T12:08:15.863 回答