Android - 当activity.setContentView完成渲染时是否触发了任何事件?

时间:2012-01-05 10:30:39

标签: android image events matrix onready

我的活动准备就绪后,我正试图从myImageView.getImageMatrix()方法获取值。 我尝试使用onCreate()onStart()onResume()方法,但我得到的矩阵是默认值。

如果我通过OnClickListener触发myImageView.getImageMatrix(),则在我的活动可见后,我会得到正确的值。


为了更清楚:

  • 调用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 个答案:

答案 0 :(得分:16)

您也可以尝试这种方法:

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);        
     }      
});  

答案 1 :(得分:4)

我不是100%但我需要知道类似于我的开发,我发现在加载视图时会调用onWindowFocusChanged()。我不确定这是否满足您的需求。

答案 2 :(得分:1)

也许你可以使用onLayoutChangeListener,但我不确定。

答案 3 :(得分:0)

也许您可以使用AsyncTask(http://developer.android.com/reference/android/os/AsyncTask.html)来监控ImageView是否已加载(可能不等于null)。

您可以在onProgressUpdate中显示一个progess对话框,然后从onPostExecute继续您的代码。