ActivityのonCreate でImageView の現在のX & Y座標が欲しいのですが、同じ解決策はありますか? 同じことについてあなたの考えを共有してください。
質問する
1700 次
2 に答える
1
実際、setContentView()
Androidを呼び出すと、ビューの描画が表面に開始されます。これは、を使用して観察できます。したがって、現在描画されていないため、 inviewTrewwObserve
の高さと幅を取得することはできません。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 に答える