Android ImageView onClick

Android ImageView onClick

我是 Android 开发新手。 我在数组中有 5 张图片,我想在点击时更改图片,所以这就是我所做的,但图片不会改变。

</p> <pre><code> int[] images = {R.drawable.pic_1, R.drawable.pic_2, R.drawable.pic_3, R.drawable.pic_4, R.drawable.pic_5}; int plus = 0 ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main2); ImageView img = (ImageView) findViewById(R.id.imageView); Bitmap bImage ; Button b1 = (Button) findViewById(R.id.button); b1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { plus++; } }); Button b2 = (Button) findViewById(R.id.button2); b2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { plus--; } }); bImage = BitmapFactory.decodeResource(this.getResources(),images[plus]); img.setImageBitmap(bImage); }

有人知道可以这样工作吗? 提前致谢。

试试这个:

 int[] images = {R.drawable.pic_1,
        R.drawable.pic_2,
        R.drawable.pic_3,
        R.drawable.pic_4,
        R.drawable.pic_5};
     int plus = 0 ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {


        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main2);

        ImageView img = (ImageView) findViewById(R.id.imageView);
        Bitmap bImage ;

        Button b1 = (Button) findViewById(R.id.button);
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              if(plus<4){
                plus++;
                img.setBackgroundResource(images[plus]);
              }
            }
        });

        Button b2 = (Button) findViewById(R.id.button2);
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(plus>0){
                plus--;
                img.setBackgroundResource(images[plus]);
                }
            }
        });


            bImage =  BitmapFactory.decodeResource(this.getResources(),images[plus]);
            img.setImageBitmap(bImage);



    }

我认为您应该精通 Android Activity 生命周期。基本的了解将对您开始 android 开发非常有帮助。

OnCreate 方法仅在创建 activity 时调用一次。因此,在您的 onclicklisteners 中,您还应该放置用于更改图像位图的代码。所以你的 onclicklistener 应该是这样的:

plus++;
bImage = BitmapFactory.decodeResource(this.getResources(),images[plus]);
img.setImageBitmap(bImage); 

这只是上述问题的一个解决方案,但我强烈建议您通过基本的 android 概念来开始您的应用程序开发,而不要陷入琐碎的问题。

祝你好运!

设置全局变量

private int imageclick=0; 

并使用以下逻辑

    ImageView img = (ImageView) findViewById(R.id.imageView);
    Bitmap bImage ;

    Button b1 = (Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

    ImageView img = (ImageView) findViewById(R.id.imageView);
    Bitmap bImage ;

    Button b1 = (Button) findViewById(R.id.button);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

if(imageclick==0)
{
img.setImageResource(R.drawable.pic_1);
imageclick=1;
}
else if(imageclick==1)
{
img.setImageResource(R.drawable.pic_2);
imageclick=2;
}
else if(imageclick==2)
{
img.setImageResource(R.drawable.pic_3);
imageclick=3;
}
else if(imageclick==3)
{
img.setImageResource(R.drawable.pic_4);
imageclick=4;
}
else if(imageclick==4)
{
img.setImageResource(R.drawable.pic_5);
imageclick=0;
}
        }
    });

    Button b2 = (Button) findViewById(R.id.button2);
    b2.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

if(imageclick==0)
{
img.setImageResource(R.drawable.pic_4);
imageclick=4;
}
else if(imageclick==1)
{
img.setImageResource(R.drawable.pic_3);
imageclick=0;
}
else if(imageclick==2)
{
img.setImageResource(R.drawable.pic_2);
imageclick=1;
}
else if(imageclick==3)
{
img.setImageResource(R.drawable.pic_1);
imageclick=2;
}
else if(imageclick==4)
{
img.setImageResource(R.drawable.pic_5);
imageclick=3;
}
      }
        }
    });


        bImage =  BitmapFactory.decodeResource(this.getResources(),images[plus]);
        img.setImageBitmap(bImage);



}

这个逻辑可能适合你