1

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.

4

2 回答 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 回答