如何在安卓系统中动态更新或更改ImageView中的图片?

5

使用计时器或线程,在特定时间内更新ImageView以显示不同的图像,这是否可行?

5个回答

20
    ImageView image = (ImageView) findViewById(R.id.test_image);
    image.setImageResource(R.drawable.xxx);

使用上述代码将图像设置到ImageView中,并使用可以更改UI内容的线程,基本上像这样:

public void onClick(View v) {
 new Thread(new Runnable() {
   public void run() {
     ImageView image = (ImageView) findViewById(R.id.test_image);
    image.setImageResource(R.drawable.xxx);
   }
  }).start();
}

1
我想在20秒内使用计时器或线程更改ImageView中的8个图像。我已经尝试了IOT,但它没有更新UI,所以只有第一张图片显示出来。我希望不需要任何按钮点击或事件。 - JCJ
这段代码只会更新一次。我想用不同的图片更新它8次。 - JCJ
使用以下代码设置重复任务:timer.scheduleAtFixedRate(new TimerTask() { public void run() { // 在此处添加任务... } }, 延迟时间, 间隔时间); - Abhay Kumar

0

是的,这是用于更新图像的。例如,您想要显示任何图像,您可以访问R.drawable.<img_name>,然后将其传递到线程或任何计时器代码中使用此行代码。 - Pratik
我想在20秒内使用计时器或线程更改ImageView中的8个图像。我已经尝试了IOT,但它没有更新UI,所以只有第一张图片显示出来。 - JCJ
在设置资源无效之后,请尝试运行此代码 invalidateDrawable(Drawable dr)。 - Pratik

0
val button = findViewById<Button>(R.id.button)
val image = findViewById<ImageView>(R.id.test_image)

button.setOnClickListener{
    Log.i("Info", "Button Pressed")
    image.setImageResource(R.drawable.test_image2)
}

1
问题是关于使用计时器或线程更新ImageView。您的答案与此无关。 - Robert
问题是关于经常更改的图片。 - MRazaImtiaz
此图像更新仅供一次使用。但您可以使用“布尔值”来切换图像。 - KaZaiya

0

尝试使用setImageResource()方法动态更改图像。将可绘制的图像引用添加为参数以更改图像。

以下是示例代码:

package com.vsoft.imagechanger;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

public class MainActivity extends Activity {

 ImageView ChangeImage;
 Button ChangeButton;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 
    ChangeButton = (Button)findViewById(R.id.button1);
    ChangeImage = (ImageView)findViewById(R.id.imageView1);
 
    ChangeButton.setOnClickListener(new View.OnClickListener() {
 
       @Override
       public void onClick(View v) {
          //ChangeImage.setImageResource(R.drawable.xxx);
          ChangeImage.setImageResource(R.drawable.imageView2)
       }
    });
 }
}

0

您可以简单地设置图像URI:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            Uri uri;
            if (data != null) {
                uri = data.getData();
                iv030.setImageURI(uri);
                Toast.makeText(getApplicationContext(),uri.toString(),Toast.LENGTH_SHORT).show();
            }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接