java - 同时更改多个 ImageView 的图像

标签 java android

在我的 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/

相关文章:

Java JSP Jquery AJAX Servlet

android - HiltAndroidTest 中的同一个文件有多个处于 Activity 状态的 DataStore

java - Windows -cp Mainclass 无法加载

java - 如何从 2D int 数组构造 ArrayList?

java - 如何引用具有多个边界的通用返回类型

android - 在 gridview 项目之间显示一条细线

android - 如何将图像 url 加载到 ImageView ,其中 ImageView 设计在线程内声明?

java - URL连接Inputstream和outputstream对象

java - 如何使用适用于 Java 的 Google API 客户端库检索 youtube 缩略图

android - 偏好点击监听器上的偏好 Activity