要实现的效果如图:
代码很简单,主要是TranslateAnimation类的
publicTranslateAnimation(int fromXType, float fromXValue, int toXType, float toXValue, int fromYType, float fromYValue, int toYType, float toYValue)
Constructor to use when building a TranslateAnimation from code
Parameters
fromXType | Specifies how fromXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
fromXValue | Change in X coordinate to apply at the start of the animation. This value can either be an absolute number if fromXType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
toXType | Specifies how toXValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
toXValue | Change in X coordinate to apply at the end of the animation. This value can either be an absolute number if toXType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
fromYType | Specifies how fromYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
fromYValue | Change in Y coordinate to apply at the start of the animation. This value can either be an absolute number if fromYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise. |
toYType | Specifies how toYValue should be interpreted. One of Animation.ABSOLUTE, Animation.RELATIVE_TO_SELF, or Animation.RELATIVE_TO_PARENT. |
toYValue | Change in Y coordinate to apply at the end of the animation. This value can either be an absolute number if toYType is ABSOLUTE, or a percentage (where 1.0 is 100%) otherwise |
代码如下:
1. package com.lenovo.wufl.translateanimationmenu; 2. 3. import android.app.Activity; 4. import android.os.Bundle; 5. import android.view.View; 6. import android.view.View.OnClickListener; 7. import android.view.animation.Animation; 8. import android.view.animation.TranslateAnimation; 9. import android.widget.Button; 10. import android.widget.LinearLayout; 11. import android.widget.TextView; 12. 13. public class TranslateAnimationMenuActivity extends Activity implements 14. OnClickListener { 15. private TextView mMenu; 16. private Button mButton; 17. private TranslateAnimation mShowAnimation; 18. private TranslateAnimation mHideAnimation; 19. private boolean isShow; 20. 21. 22. @Override 23. public void onCreate(Bundle savedInstanceState) { 24. super.onCreate(savedInstanceState); 25. setContentView(R.layout.main); 26. 27. initView(); 28. initAnimation(); 29. } 30. 31. private void initView() { 32. mMenu = (TextView) findViewById(R.id.menu); 33. mButton = (Button) findViewById(R.id.button); 34. mButton.setOnClickListener(this); 35. mMenu.setVisibility(View.GONE); 36. isShow = false; 37. } 38. 39. private void initAnimation() { 40. // 从自已-1倍的位置移到自己原来的位置 41. mShowAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 42. 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, 43. Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 44. 0.0f); 45. mHideAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 46. 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, 47. Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 48. -1.0f); 49. mShowAnimation.setDuration(500); 50. mHideAnimation.setDuration(500); 51. 52. } 53. 54. @Override 55. public void onClick(View v) { 56. if (v.getId() == R.id.button) { 57. if (isShow) { 58. isShow = false; 59. mMenu.startAnimation(mHideAnimation); 60. mMenu.setVisibility(View.GONE); 61. } else { 62. isShow = true; 63. mMenu.startAnimation(mShowAnimation); 64. mMenu.setVisibility(View.VISIBLE); 65. } 66. } 67. } 68. }