![](/img/trans.png)
[英]android - how to get the image edge x/y position inside imageview
[英]How can get x and y position of an image in android on onCreate?
我想在Activity的 onCreate上使用ImageView的当前X和Y坐标,是否有相同的解决方案? 请在同一点上分享您的想法。
实际上,当您调用setContentView()
,Android外壳程序会开始在表面上绘制视图,您可以使用viewTrewwObserve
进行观察,因此您无法在onCreate()
获得ImageView
的高度和宽度,因为它目前尚未绘制。
您可以使用,(未尝试)
imageView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// Get ImageView height width here <------------
}
});
当全局布局状态或视图树中视图的可见性更改时,它将注册要调用的回调。
更新:
或者,您可以使用onWindowFocusChanged (boolean hasFocus)
。
这是该活动是否对用户可见的最佳指示。 默认实现清除键跟踪状态,因此应始终调用它。
(1)您可以使用getViewTreeObserver()
获得它,或(2)您可以在onCreate()
上添加异步Task
@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);
的时间延迟Thread.sleep(10);
我通常使用这种方法来获取高度和宽度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.