在我的 Android 应用程序中,我有一个 Activity 在一个 ScrollView
中包含 20 个不同的 ImageViews
。而且我需要能够同时高效地更改每个 ImageView
的图像。什么 Java 代码
适合执行此操作?
这就是我声明我的 ImageViews
的方式:
private ImageView imageView1;
imageView1 = (ImageView) findViewById(R.id.imageView1);
...
...
private ImageView imageView20;
imageView20 = (ImageView) findViewById(R.id.imageView20);
最佳答案
希望这对你有帮助,请研究这个例子,看看它是否是你想要的:
package com.my.example;
import android.app.Activity;
import android.app.*;
import android.os.*;
import android.view.*;
import android.view.View.*;
import android.widget.*;
import android.content.*;
import android.content.res.*;
import android.graphics.*;
import android.graphics.drawable.*;
import android.widget.ImageView;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends Activity {
private Timer _timer = new Timer();
private double counterForImageView1 = 0;
//...
private double counterForImageView20 = 0;
private double duration = 1000;
//duration determinates when the images will be changed
//every image will be displayed for a certain amount of time then it gets changed
//in this example duration = 1000 which means that every image will be displayed for 1000 milliseconds ( 1 second )
private ImageView imageview1;
//...
private ImageView imageview20;
private TimerTask imagesChanger;
@Override
protected void onCreate(Bundle _savedInstanceState) {
super.onCreate(_savedInstanceState);
setContentView(R.layout.main);
initialize(_savedInstanceState);
initializeLogic();
}
private void initialize(Bundle _savedInstanceState) {
imageview1 = (ImageView) findViewById(R.id.imageview1);
//...
imageview20 = (ImageView) findViewById(R.id.imageview20);
}
private void initializeLogic() {
imagesChanger = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
switch((int)counterForImageView1) {
case ((int)0): {
imageview1.setImageResource(getResources().getIdentifier("image1_for_imageview1", "drawable", getPackageName()));
counterForImageView1++;
break;
}
case ((int)1): {
imageview1.setImageResource(getResources().getIdentifier("image2_for_imageview1", "drawable", getPackageName()));
counterForImageView1++;
break;
}
case ((int)2): {
imageview1.setImageResource(getResources().getIdentifier("image3_for_imageview1", "drawable", getPackageName()));
counterForImageView1 = 0;
break;
}
//the amount of cases depends on the amount of images you want to display for every ImageView
}
//...
switch((int)counterForImageView20) {
case ((int)0): {
imageview1.setImageResource(getResources().getIdentifier("image1_for_imageview20", "drawable", getPackageName()));
counterForImageView20++;
break;
}
case ((int)1): {
imageview1.setImageResource(getResources().getIdentifier("image2_for_imageview20", "drawable", getPackageName()));
counterForImageView20++;
break;
}
case ((int)2): {
imageview1.setImageResource(getResources().getIdentifier("image3_for_imageview20", "drawable", getPackageName()));
counterForImageView20 = 0;
break;
}
}
}
});
}
};
_timer.scheduleAtFixedRate(imagesChanger, (int)(0), (int)(duration));
}
@Override
protected void onActivityResult(int _requestCode, int _resultCode, Intent _data) {
super.onActivityResult(_requestCode, _resultCode, _data);
switch (_requestCode) {
default:
break;
}
}
}
关于java - 同时更改多个 ImageView 的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49829848/