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.

Другие вопросы по тегам