0

There is an ImageView and a button. When button gets clicked an imageview should change the source(display another image) for 1 second and then go back to default source which is defined in layout file.

How to do that???

Thanks in advance

2 Answers2

1

change image when button clicked

ImageView image;
image.setImageResource(R.drawable.newimage);

and after 2 second change default image

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() {
        ImageView image;
        image.setImageResource(R.drawable.defaultimage);
    } 
}, 2000);
Aadi Droid
  • 1,689
  • 4
  • 22
  • 46
Dev 9
  • 263
  • 2
  • 5
  • ImageButton barkk = (ImageButton) this.findViewById(R.id.barkk); barkk.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { playSound(bark); ImageView dog = (ImageView) findViewById(R.id.dog); dog.setImageResource(R.drawable.dog2); Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { ImageView dog; dog.setImageResource(R.drawable.dog1); } }, 2000); } }); – user3158610 Feb 20 '14 at 10:53
  • I do like above, but there is an error message in the line "dog.setImageResource(R.drawable.dog1);" stating: The local variable dog may not have been initialized – user3158610 Feb 20 '14 at 10:56
  • solved thid by replacing 'ImageView dog;' with 'ImageView dog = (ImageView) findViewById(R.id.dog);' – user3158610 Feb 20 '14 at 11:09
  • dog.setImageDrawable(R.drawable.dog1); use this. – Dev 9 Feb 20 '14 at 11:12
0

To change the imageView content you use :

yourImageView.setImageDrawableResouce(R.drawable.imgTemp); 

To count 1 second, you can use

final ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);

exec.schedule(new Runnable(){
    @Override
    public void run(){
       setYourImageView();//return the image to the original one
    }
}, 1, TimeUnit.SECONDS);

To do it in the UI thread you can use

runOnUiThread(new Runnable() {
                        public void run() {

                            yourImageView.setImageDrawableResouce(R.drawable.imgTemp);
                           }

                        }
                    });
MSaudi
  • 4,442
  • 2
  • 40
  • 65