Android - Есть ли какое-либо событие, вызванное, когда Activity.setContentView закончил рендеринг? - PullRequest
8 голосов
/ 05 января 2012

Я пытаюсь получить значения из метода 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 ]

16 голосов
/ 05 января 2012

Вы также можете попробовать этот метод:

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);        
     }      
});  
4 голосов
/ 05 января 2012

Я не на 100%, но мне нужно было знать нечто подобное для моей разработки, и я обнаружил, что onWindowFocusChanged () вызывается при загрузке представления.Я не уверен, удовлетворяет ли это вашим потребностям или нет.

1 голос
/ 05 января 2012

Возможно вы можете использовать onLayoutChangeListener , но я не уверен.

0 голосов
/ 05 января 2012

Возможно, вы могли бы использовать AsyncTask (http://developer.android.com/reference/android/os/AsyncTask.html), который отслеживает, загружен ли ImageView (возможно, не равен нулю).

Вы можете отобразить диалоговое окно progess в onProgressUpdate и затем продолжить свой код с onPostExecute.

...