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

时间:2013-02-05 11:51:01

标签: android coordinates android-imageview oncreate co

我想要当前 X& Y 活动 onCreate 上的ImageView坐标,是否有相同的解决方案?请分享您的想法。

2 个答案:

答案 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); 我通常使用这种方法来获得高度并获得宽度。