android - 在限定时间内显示按钮

时间:2016-03-13 08:15:17

标签: java android imagebutton fadeout

我正在制作一个显示ImageButton的应用,如果用户没有长时间触摸它,它会消失直至消失。
我尝试了许多不同的解决方案(动画,wait()等),但没有做我尝试过的事情。
它应该像Toast一样工作,只显示3秒然后淡出(在流程结束时,可见性应为GONE

3 个答案:

答案 0 :(得分:1)

使用timeralpha

long duration = 5000 // 5 seconds
long tick = 100 // 0.1 seconds;

new CountDownTimer(duration, tick) {

     public void onTick(long millisUntilFinished) {
         mImageButton.setAlpha(millisUntilFinished / (float)duration)
     }

     public void onFinish() {
         mImageButton.setVisibility(View.GONE);
         mImageButton.setAlpha(1); // incase you want to show the button again
     }
}.start();
  

setAlpha() - 设置视图的不透明度。这是一个从0到1的值,其中0表示视图完全透明,1表示视图完全不透明。

答案 1 :(得分:0)

您可以使用Toast对象,根据Button的外观设置其View。作为参考,您可以看到:http://techblogon.com/custom-toast-android-example-with-source-code-description/http://www.javatpoint.com/android-custom-toast-example 您还可以扩展Toast.java并在公共构造函数中设置视图。

答案 2 :(得分:0)

也许是这样的:

yourImageButton.animate()
    .alpha(0)
    .setStartDelay(3000)
    .setDuration(1000)
    .setListener(new Animator.AnimatorListener() {


        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {
            yourImageButton.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });

这使用ViewPropertyAnimator并在3000ms后淡出Button。 如果动画结束,将调用AnimationEnd()并将Visibility设置为Gone。 在你的onClickMethod中你可以选择取消()动画; 请记住,如果将Visibility设置为GONE,则无法再回到VISIBLE状态,您必须再次实例化ImageButton。更好用:

.setVisibilty(View.INVISIBLE);