0

I want to fade-out ImageView by tapping on it. Is it right how I try or can somebody give me advice on to how make it better? Now I have Add "private", "new", "Animation", "fadeOutAndHideImage", "fadeOut", "public" are red. What I do wrong? I every time have something bad with code and can't finished easy app.

package com.example.fairytale_quest

import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import android.view.animation.AlphaAnimation
import android.view.animation.Animation
import android.widget.ImageView
import kotlinx.android.synthetic.main.activity_main5.*

class Main5Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main5)
        val actionBar = supportActionBar

        actionBar!!.hide()
       var listener = OnTouchListener(function = { view, motionEvent ->

            if (motionEvent.action == MotionEvent.ACTION_MOVE) {

                view.y = motionEvent.rawY - view.height / 2
                view.x = motionEvent.rawX - view.width / 2
            }

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

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

            draggableImage.startAnimation(fadeOut);
        }
            draggableImage.setOnTouchListener(listener)
            draggableImage2.setOnTouchListener(listener)

        }

    }
}
ThunderStruct
  • 1,504
  • 6
  • 23
  • 32
savera sleemy
  • 73
  • 1
  • 12

1 Answers1

3

refering to this answer: Making a smooth fade out for imageview in android

Replace img.setVisibility(View.GONE) in your code with a call to fadeOutAndHideImage(img) which is defined like this:

  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);
    }

It will apply the fade out animation first, then will hide the image view.

KOTLIN

       private fun fadeOutAndHideImage(img: ImageView) {
    val fadeOut = AlphaAnimation(1F, 0F)
    fadeOut.setInterpolator(AccelerateInterpolator())
    fadeOut.setDuration(1000)

    fadeOut.setAnimationListener(object: Animation.AnimationListener {
       override fun onAnimationEnd(animation:Animation) {
            img.setVisibility(View.GONE)
        }
        override fun onAnimationRepeat(animation:Animation) {}
        override  fun onAnimationStart(animation:Animation) {}
    })
    img.startAnimation(fadeOut)
}
Alireza Sharifi
  • 1,127
  • 1
  • 9
  • 18