android--利用Animation.RELATIVE_TO_SELF做出个性化的动画
在Android开发中,Animation是用来给控件制作效果的。大多数的控件都可以用这个类,这个类包含了4种基本动作,分别为移动,旋转,淡入淡出,缩放。
使用Animation的两种方式:
方式一:在代码中创建、设置以及启动动画(移动TranslateAnimation/旋转RotateAnimation/淡入淡出AlphaAnimation/缩放ScaleAnimation),这样的优点是可以方便调试程序效果;
方式二:在xml中对控件的属性做设置,好处是代码的重用性比较高,缺点是不方便调试。
下面我们重点针对代码创建的方式来举例:
在开始示例之前我们普及两个非常重要的参考标准:Animation.RELATIVE_TO_SELF(相对于自身)、Animation.RELATIVE_TO_PARENT(相对于父控件(容器))。
1、imageView控件由完全透明到完全不透明变化,持续时间为0.2s;
private void toVisibleAnim(View view) { AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f); alphaAnimation.setDuration(200); view.startAnimation(alphaAnimation); }
2、imageView控件由原来大小尺寸沿自身尺寸中心逐渐缩放到0,持续时间为0.2s;
private void toHideAnim(View view) { ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.0f, 1.0f, 0.0f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scaleAnimation.setDuration(200); view.startAnimation(scaleAnimation); }
3、imageView控件以自身中心为圆心旋转90度,持续时间为0.2s;
private void rotateAnim(View view) { view.setVisibility(View.VISIBLE); RotateAnimation rotateAnimation = new RotateAnimation(0, 90, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); rotateAnimation.setDuration(200); view.startAnimation(rotateAnimation); }
4、imageView控件从自身位置的最右端开始向左水平滑动了自身的宽度,持续时间为0.2s;
private void showScrollAnim(View view) { view.setVisibility(View.VISIBLE); TranslateAnimation mShowAction = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); mShowAction.setDuration(200); view.startAnimation(mShowAction); }
5、image控件从自身位置的最左端开始水平向右滑动隐藏动画,持续时间0.2s
private void hiddenScrollAnim(LinearLayout view) { view.setVisibility(View.GONE); TranslateAnimation mHiddenAction = new TranslateAnimation( Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 1.0f, Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f); mHiddenAction.setDuration(200); view.startAnimation(mHiddenAction); }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。