1

I want to create an ImageView in a service class. I want to fade out my image when user clicked on it. I try below code:

        ImageView chatHead = new ImageView(this);
        chatHead.setImageResource(R.drawable.battery_20);
        final Animation fadeOut = new AlphaAnimation(1, 0);
        fadeOut.setInterpolator(new AccelerateInterpolator());
        fadeOut.setStartOffset(50);
        fadeOut.setDuration(3000);

        fadeOut.setAnimationListener(new Animation.AnimationListener()
        {
            public void onAnimationEnd(Animation animation)
            {
                chatHead.setVisibility(View.GONE);
            }
            public void onAnimationRepeat(Animation animation) {}
            public void onAnimationStart(Animation animation) {}
        });

        chatHead.setAnimation(fadeOut);

        chatHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chatHead.setVisibility(View.INVISIBLE);

  }
        });

When I click on image of ImageView, it disappears immediately!

vhu
  • 12,244
  • 11
  • 38
  • 48
Ahmad Vatani
  • 1,630
  • 4
  • 21
  • 34

2 Answers2

0
 chatHead.setVisibility(View.INVISIBLE);

you need to start your animation after above line

fadeOut.start();

like

  chatHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                chatHead.setVisibility(View.INVISIBLE);
                fadeOut.start();

      }
  });
Gekkula
  • 171
  • 1
  • 7
  • why do you want to hide the image when the button is clicked ? `chatHead.setVisibility(View.INVISIBLE);` Why not `chatHead.setVisibility(View.VISIBLE);` – Gekkula Jul 24 '15 at 10:13
  • sry i don't understand your question! – Ahmad Vatani Jul 24 '15 at 10:23
  • when are you are clicking the image you are setting it invisible mode and then starting the animation. `chatHead.setVisibility(View.INVISIBLE);` remove that part and you can see the fadeOut – Gekkula Jul 24 '15 at 11:50
0

That's because you are calling setVisibility(View.INVISIBLE); in your image OnClickListener.

Redefine your OnClickListener method like so:

chatHead.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                fadeOutAndHideImage(chatHead);
            }
        });

Define fadeOutAndHideImage method:

private void fadeOutAndHideImage(final ImageView img)
  {
    Animation fadeOut = new AlphaAnimation(1, 0);
    fadeOut.setInterpolator(new AccelerateInterpolator());
    fadeOut.setDuration(1000);

    fadeOut.setAnimationListener(new AnimationListener()
    {
            public void onAnimationEnd(Animation animation) 
            {
                  img.setVisibility(View.GONE);
            }
            public void onAnimationRepeat(Animation animation) {}
            public void onAnimationStart(Animation animation) {}
    });

    img.startAnimation(fadeOut);
}

See this post for reference.

Community
  • 1
  • 1
Marcus
  • 6,697
  • 11
  • 46
  • 89