Android layout onClick和setImagResource[Android]API 10
我试图理解为什么我会遇到下面的问题。 我有一个ImageView,我给它设置了一个图像,然后我给它设置了一个onClickListener,所以当你点击图像时,通过image01.setImageResource(R.drawable.newImage)更改图像(为新图像)。之后,我调用一个方法,检查一个条件,如果它是真的,我会再次将图像更改为默认图像。 但我看不到变化,因为它会立即变化。我还插入了一个睡眠,使它变慢。 (默认情况下,在xml代码中,我将图像设置为oldImage) 好的。。。也许还不清楚。。让我们看看代码:Android layout onClick和setImagResource[Android]API 10,android-layout,Android Layout,我试图理解为什么我会遇到下面的问题。 我有一个ImageView,我给它设置了一个图像,然后我给它设置了一个onClickListener,所以当你点击图像时,通过image01.setImageResource(R.drawable.newImage)更改图像(为新图像)。之后,我调用一个方法,检查一个条件,如果它是真的,我会再次将图像更改为默认图像。 但我看不到变化,因为它会立即变化。我还插入了一个睡眠,使它变慢。 (默认情况下,在xml代码中,我将图像设置为oldImage) 好的。。。也
private void myMethod(){
ImageView image01 = (ImageView) findViewById(R.id.image01);
image01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//When you click on image it change!
image01.setImageResource(R.drawable.newImage);
checkImg(image01);
}
});
}
private void checkGame(ImageView img){
try{
Thread.sleep(1000);
if(condition)
img.setImageResource(R.drawable.oldImage);
}catch (Exception e) {
e.printStackTrace();
}
}
我立刻看到了那张旧照片。有什么问题吗?
在myMethod()中的所有方法终止之前,视图更改是否可能不会应用于myMethod()中
提前感谢使用Thread.sleep()方法,实际上您正在等待主UI线程。主UI线程的方法不同步。请注意这一点
请通过developers.android网站轻松使用线程。。。在看到有用的代码之前
private void myMethod(){
ImageView image01 = (ImageView) findViewById(R.id.image01);
image01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//When you click on image it change!
image01.setImageResource(R.drawable.newImage);
checkGame(image01);
}
});
}
private void checkGame(ImageView img){
try{
// Thread.sleep(1000);
if(condition)
image01.postDelayed(new Runnable() {
@Override
public void run() {
image01.setImageResource(R.drawable.oldImage);
}
}, 2000);
}catch (Exception e) {
e.printStackTrace();
}
}