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

Android-activity.setContentView完成渲染时是否触发任何事件?,android,image,events,matrix,onready,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]

一旦活动准备就绪,我将尝试从
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]}


也许您可以使用异步任务,但我不确定。

也许您可以使用异步任务(http://developer.android.com/reference/android/os/AsyncTask.html)它监视ImageView是否已加载(可能不等于null)


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

我不是100%,但我需要知道一些与我的开发类似的东西,我发现()在加载视图时被调用。我不确定这是否满足您的需要。

您也可以尝试以下方法:

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

问题在于,直到onResume()完成后,才会对布局进行测量和渲染。检查此问题以了解发生这种情况时如何得到通知:谢谢,一旦数据存在,就会调用onWindowFocusChanged,但是每次焦点更改时都会调用它。我可以添加一个标志来指示init状态,但它看起来并不那么平滑。我认为这是我目前的解决方案,有什么想法吗?不确定,无论如何要使用这个类,应用程序必须指定API级别为“11”或更高。不幸的是,这不是我的情况。为此,onWindowFocusChanged在数据存在时被调用,但是每次焦点更改时都会调用它。我可以添加一个标志来指示init状态,但它看起来并不那么平滑。我想这是我目前的解决方案,有什么想法吗?哦,是的,很抱歉忘了添加那个。我有一个全局布尔值,用来确保它是焦点改变的第一个调用,然后做我需要做的事情。我想这取决于你需要做什么,但是如果你只需要在第一次加载屏幕时访问某个东西,那么如果不是最优雅的代码,那么一个全局变量应该可以修复它。对不起,伙计,我认为这两个答案都很好,我希望我能同时选择它们(我能做到吗?)。但我认为另一个解决方案更为平滑。无论如何,我真的很感激你的回答!不,我不这么认为,我没注意到你有另一个被接受的答案。我认为最好是你接受你实现的一个答案,所以如果另一个答案对你有效,那就是应该接受的答案。我只是担心我的答案有问题,如果我也想知道我自己的代码:)谢谢,听起来有点复杂,因为这似乎是一个琐碎的任务。“视图准备就绪时通知”RemoVegLobalOnlyOutliner()现在已不推荐使用,从SDK版本16(Jelly Bean)开始,应使用removeOnGlobalLayoutListener()。