按下按钮使用数组从Drawable文件夹中设置图像背景

时间:2014-04-18 10:25:23

标签: android

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button button1;
        final ImageView image;

        button1 = (Button) findViewById(R.id.button1);
        image = (ImageView) findViewById(R.id.imageView1);


        button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                for (int j = 1; j < 6; j++) {
                       Drawable dreaw =                          getResources().getDrawable(getResources().getIdentifier("d002_p00"+j, "dreaw",getPackageName()));
          image.setBackgroundResource("R.drawable." +dreaw);
                    }
            }
        });

              image.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

            }
        });
    }
}

我是android的新手我想按下我的按钮图像时想要更改我的图像 在这一行image.setBackgroundResource("R.drawable." +dreaw);中显示错误我可以如何解决它,请帮助我。

5 个答案:

答案 0 :(得分:2)

你做不到:

Drawable dreaw = getResources().getDrawable(getResources().getIdentifier("d002_p00"+j, "dreaw",getPackageName()));
image.setBackgroundResource("R.drawable." +dreaw);

尝试:

Drawable dreaw = getResources().getDrawable(getResources().getIdentifier("d002_p00"+j, "dreaw",getPackageName()));
image.setBackground(dreaw);

答案 1 :(得分:1)

R.drawable.xxx不是字符串,它是每个资源的自动生成的intiger id。

image.setBackgroundResource(“R.drawable。”+ dreaw);错了。

你可以做什么

int res=getResources().getIdentifier("d002_p00"+j, "drawable",getPackageName()));

image.setBackgroundResource(RES);

答案 2 :(得分:0)

试试这个

image.setBackgroundDrawable(dreaw); 

此方法已从api级别16弃用,但是对于后备兼容性,您应该使用上述方法。

答案 3 :(得分:0)

只是做:

image.setBackgroundDrawable(drew);

答案 4 :(得分:0)

正如你的评论引用“它的工作方式,它展示了我的第一张和最后一张图片。

你只能看到第一个和最后一个图像。因为for循环处于匆忙中,这意味着你无法看到图像的变化,因为for循环是在 ms(Milli或Micro Seconds)。所以你想把这个

Thread.sleep(<put_how_much_ms_you_want_to_make_the_for_loop_sleep);

暂时睡觉for循环。如果你把这个

Thread.sleep(1000);//Make the thread or program blocked for 1 second.

要在For循环中实施,您可以像这样更改For循环。

 for (int j = 1; j < 6; j++)
 {
      int res=getResources().getIdentifier("d002_p00"+j, "drawable",getPackageName()));
      image.setBackgroundResource(res);
      Thread.sleep(1000);//Make the for loop wait for 1 second.
 }

通过这个你可以看到图像的过渡。 我知道这对你有帮助吗。