可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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