Android - Есть ли какое-либо событие, вызванное, когда Activity.setContentView закончил рендеринг?
Я пытаюсь получить значения от myImageView.getImageMatrix()
метод, как только моя деятельность готова. Я пытался использовать onCreate()
, onStart()
, onResume()
методы, но матрица, которую я получаю, используется по умолчанию.
Если я позвоню myImageView.getImageMatrix()
вызванный OnClickListener, после того, как моя активность видна, я получаю правильные значения.
Просто чтобы быть более понятным:
вызов getImageMatrix onStart =
Matrix{[1.0, 0.0, 0.0][0.0, 1.0, 0.0][0.0, 0.0, 1.0]}
вызов getImageMatrix onClick =
Matrix{[0.77488154, 0.0, 7.6717987][0.0, 0.77488154, 0.0][0.0, 0.0, 1.0]}
4 ответа
Вы также можете попробовать этот метод:
ImageView myImageView = (ImageView) findViewById(R.id.myImageView);
ViewTreeObserver vto = myImageView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
// do something now when the object is loaded
// e.g. find the real size of it etc
myImageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
});
Я не на 100%, но мне нужно было знать нечто подобное для моей разработки, и я узнал, что onWindowFocusChanged() вызывается при загрузке представления. Я не уверен, удовлетворяет ли это вашим потребностям или нет.
Может быть, вы можете использовать onLayoutChangeListener, но я не уверен.
Возможно, вы могли бы использовать AsyncTask (http://developer.android.com/reference/android/os/AsyncTask.html), который отслеживает, загружен ли ImageView (возможно, не равен нулю).
Вы можете отобразить диалоговое окно progess в onProgressUpdate, а затем продолжить свой код с onPostExecute.