2016-03-13 2 views
2

Я делаю приложение, где отображается ImageButton и исчезает, пока оно не исчезнет, ​​если пользователь не дотронется до него слишком долго.
Я пробовал много разных решений (анимация, wait() и т. Д.), Но ничего не сделал, что я пытался ...
Он должен работать как Toast, просто появляется в течение 3 секунд, а затем исчезает (в конце . обрабатывать видимость должна быть GONEandroid - показать кнопку в течение ограниченного времени

ответ

1

Использовать timer и alpha

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 означает, что представление полностью непрозрачно.

+0

The ' ImageButton' показывает только 0,1 секунды, а затем исчезает и никогда не появляется (даже если я его запускаю с помощью 'setVisibility (View.VISIBLE)' ... – Dotan

+0

Извините @Dotan скорректированный ответ –

+0

Спасибо, работает отлично (: – Dotan

0

вы можете использовать объект Toast, установить его вид, как на внешний вид Баттона Для справки вы можете увидеть:. http://techblogon.com/custom-toast-android-example-with-source-code-description/ и http://www.javatpoint.com/android-custom-toast-example вы можете также расширить Toast.java и в общественный конструктор может установить вид.

+0

Я бы хотел, чтобы он был кликабельным и закругленным ... возможно ли это с помощью тоста? – Dotan

+0

да. Когда вы устанавливаете Image, вы можете установить фоновое изображение (например, так, как вы хотите, закругленные углы), и в представлении вы можете установить сенсорный и щелчок слушателей ... –

+0

Не совсем то, что я искал ...
@Joe Maher's ответ сделал это правильно ...
спасибо anyways (: – Dotan

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. В случае завершения анимации, на AnimationEnd() вызывается и установит видимость в Gone. В вашем onClickMethod вы можете дополнительно отменить() анимацию; Имейте в виду, что если вы установите видимость на GONE, вы не можете просто вернуться в состояние VISIBLE, вам нужно снова создать экземпляр ImageButton. Лучше использовать:

.setVisibilty(View.INVISIBLE); 
Смежные вопросы