How to animate setVisibility for an imagebutton on Android?

匿名 (未验证) 提交于 2019-12-03 02:50:02

问题:

I have a layout that has a listview and imagebutton:

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:orientation="vertical"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:paddingTop="4px"     android:background="@color/bgColor">      <ImageButton     android:id="@+id/imageButton"     android:src="@drawable/button"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:layout_marginRight="0dp"     android:layout_alignParentBottom="true"/>      <ListView     android:layout_above="@+id/imageButton"      android:id="@android:id/list"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:drawSelectorOnTop="false"     android:background = "@drawable/list_bg"     android:divider="@drawable/grade"     android:dividerHeight ="1px"     android:cacheColorHint="#00000000"     android:fastScrollEnabled= "true"     android:scrollingCache ="true"     android:smoothScrollbar="false"     >    </ListView> </RelativeLayout> 

Based on user selection I am using this to hide or show the image button:

       ImageButton myButton = (ImageButton) findViewById(R.id.imageButton);         myButton.setVisibility(View.GONE); 

The code is working fine, however I would like to animate the hide/show process. How do I achieve this effect?

回答1:

Yes write your own animation listener and set it to the animation like this :

public class MyAnimationListener implements AnimationListener {     private ImageButton mImgButton;      public MyAnimationListener(ImageButton imgButton) {         mImgButton = imgButton;     }      @Override     public void onAnimationEnd(Animation animation) {         mImgButton.setVisibility(View.GONE);      }      @Override     public void onAnimationRepeat(Animation animation) {         // TODO Auto - generated method stub      }      @Override     public void onAnimationStart(Animation animation) {         // TODO Auto - generated method stub      }  } 

Then set it to the animation with :

animation.setAnimationListener(new MyAnimationListener(myButton); 

Thats it.



回答2:

You can use the System animation fade in and fade out.

 Animation animFadeOut = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_out);  Animation animFadeIn = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in); myButton.setAnimation(animFadeOut) //if necessary then call: myButton.setVisibility(View.GONE); 

that should work

if you want to make your own animations: Look at Android Res and here is a very good tutorial for animations.



回答3:

To show the button call this

AlphaAnimation fade_in = new AlphaAnimation(0.0f, 1.0f); fade_in.setDuration(500); fade_in.setAnimationListener(new AnimationListener() {     public void onAnimationStart(Animation arg0)     {     }     public void onAnimationRepeat(Animation arg0)     {     }      public void onAnimationEnd(Animation arg0)     {         myButton.setVisibility(View.VISIBLE);     } }); myButton.startAnimation(fade_in); 

Then to hide the button:

AlphaAnimation fade_out = new AlphaAnimation(1.0f, 0.0f); fade_out.setDuration(upcoming_animation_time); fade_out.setAnimationListener(new AnimationListener() {     public void onAnimationStart(Animation arg0)     {     }     public void onAnimationRepeat(Animation arg0)     {     }      public void onAnimationEnd(Animation arg0)     {         myButton.setVisibility(View.GONE);     } }); myButton.startAnimation(fade_out); 


回答4:

Check this example too (using ObjectAnimator):

ObjectAnimator animator = ObjectAnimator.ofFloat(myButton, View.ALPHA, 1f, 0f); animator.setDuration(300); //ms animator.start(); animator.addListener(new AnimatorListenerAdapter() {     @Override     public void onAnimationEnd(Animator animation) {         myButton.setVisibility(GONE);     } }); 

You can easily switch to fade in effect too



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!