繁体   English   中英

如何在onCreate上获取android中图像的x和y位置?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM