动态显示图像

时间:2016-02-02 06:58:26

标签: java android android-imageview

我使用以下代码显示drawable文件夹中的图像。 但现在我想动态显示图片。每次将新图像添加到drawable文件夹时我都不想再去代码并将其添加到数组中它应该自动递增并显示。 任何想法我应该怎么做。刚开始在Android上工作。

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.Menu;
import android.widget.ImageView;
import android.app.Service;
import android.os.Handler;


 public class MainActivity extends AppCompatActivity {

 private static ImageView imgView;

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    imgView = (ImageView) findViewById(R.id.imageView);   

                                                                               final int[] images=images{R.drawable.ic_launcher,

    R.drawable.ic_launcher1,R.drawable.ic_launcher2,etc..};


    final Handler handler = new Handler();
    Runnable runnable = new Runnable() {
        int i=0;
        public void run() {
            imgView.setImageResource(images[i]);
            i++;
            if(i>images.length-1)
            {
                i=0;
            }
            handler.postDelayed(this,5000);  //for interval...
        }

    };
    handler.postDelayed(runnable, 5000); //for initial delay..

 }

3 个答案:

答案 0 :(得分:1)

如果你想动态添加图像你可以像这样命名图像文件:Image1.png; Image2.png;等等。

然后你不需要在数组中调用所有这些,而是​​可以使用lopp来获取资源中图像的名称。

然后使用以下代码获取id:

{{1}}

注意:添加图像后,不要忘记增加循环。希望它有所帮助。

答案 1 :(得分:0)

请将变量i保持为静态

即static int i = 0;

final Handler handler = new Handler();
    Runnable runnable = new Runnable() {

        public void run() {
            imgView.setImageResource(images[i]);
            i++;
            if(i>images.length-1)
            {
                i=0;
            }
            handler.postDelayed(this,5000);  //for interval...
        }

    };
    handler.postDelayed(runnable, 5000); //for initial delay..

答案 2 :(得分:0)

更改句柄代码,如下所示

final Handler handler = new Handler();
    Runnable runnable = new Runnable() {

        public void run() {
            imgView.setImageResource(images[i]);

            if(i>images.length-1)
            {
                i=0;
            }
            else
            {
                   i++;
             }
            handler.postDelayed(this,5000);  //for interval...
        }
};
handler.postDelayed(runnable, 5000); //for initial delay..