android动画之补间动画

转载 2016年05月31日 15:54:40
补间动画(移动补间动画,缩放补间动画,旋转补间动画,透明补间动画):


1.移动补间动画(TranslateAnimation):
指定移动的绝对位置(以自己的左上角为参照点):
TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 500);
translateAnimation.setDuration(5000);
imageview.startAnimation(translateAnimation);
2.指定移动的相对位置(相对父控件):
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_PARENT,
0.0f,
Animation.RELATIVE_TO_PARENT,
0.0f,
Animation.RELATIVE_TO_PARENT,
0.0f,
Animation.RELATIVE_TO_PARENT,
0.5f);
translateAnimation.setFillAfter(true);//停留在动画最后一帧,不指定的话,动画播放完毕会回到初始状态
translateAnimation.setDuration(5000);
imageview.startAnimation(translateAnimation);


3.指定移动的相对位置(相对自己)
      
TranslateAnimation translateAnimation = new TranslateAnimation(
Animation.RELATIVE_TO_SELF,
0.0f,
Animation.RELATIVE_TO_SELF,
0.0f,
Animation.RELATIVE_TO_SELF,
0.0f,
Animation.RELATIVE_TO_SELF,
4.0f);
translateAnimation.setFillAfter(true);
translateAnimation.setDuration(5000);
imageview.startAnimation(translateAnimation);
         


4.在xml中定义动画:
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta="0" 
    android:toXDelta="0"
    android:fromYDelta="0"
    android:toYDelta="200"
    android:fillAfter="true">


</translate>


<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta="0%" 
    android:toXDelta="0%"
    android:fromYDelta="0%"
    android:toYDelta="200%"
    android:fillAfter="true">


</translate>




<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="5000"
    android:fromXDelta=“0%p” 
    android:toXDelta=“0%p”
    android:fromYDelta=“0%p”
    android:toYDelta="200%p”
    android:fillAfter="true">


</translate>




TranslateAnimation translateAnimation = (TranslateAnimation) AnimationUtils.loadAnimation(this, R.anim.anim_translate);
imageview.startAnimation(translateAnimation);


2.缩放补间动画:
以自己的左上角为圆心缩放:
ScaleAnimation scaleAnimation = new ScaleAnimation(

1.0f,

1.5f, 

1.0f,

1.5f);
scaleAnimation.setFillAfter(true);
scaleAnimation.setDuration(5000);
imageview.startAnimation(scaleAnimation);


xml:


<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:toXScale="1.5"
    android:fromYScale="1.0"
    android:toYScale="1.5"
 >


</scale>


以自己的中心点为圆心进行缩放:
ScaleAnimation scaleAnimation = new ScaleAnimation(
1.0f,
1.5f,
1.0f,
1.5f,
Animation.RELATIVE_TO_SELF,
0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
scaleAnimation.setFillAfter(true);
scaleAnimation.setDuration(5000);
imageview.startAnimation(scaleAnimation);


xml:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:toXScale="1.5"
    android:fromYScale="1.0"
    android:toYScale="1.5"
    android:pivotX="50%"
    android:pivotY="50%" >


</scale>




以父控件为参照:
ScaleAnimation scaleAnimation = new ScaleAnimation(
1.0f,
1.5f,
1.0f,
1.5f,
Animation.RELATIVE_TO_PARENT,
0.5f,
Animation.RELATIVE_TO_PARENT,
0.5f);
scaleAnimation.setFillAfter(true);
scaleAnimation.setDuration(5000);
imageview.startAnimation(scaleAnimation);


xml:
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromXScale="1.0"
    android:toXScale="1.5"
    android:fromYScale="1.0"
    android:toYScale="1.5"
    android:pivotX="50%p"
    android:pivotY="50%p" >


</scale>


如果imageview在父控件中间,上面两种设置的效果并不一样,后面这个中心点并不在父控件中心,它是以imageview的左上角为参照,偏移父控件宽高的一半,这时候,动画的中心点并不在父控件的中心



3.旋转补间动画
以左上角为原点旋转:
RotateAnimation rotateAnimation = new RotateAnimation(
0,
180);
rotateAnimation.setFillAfter(true);
rotateAnimation.setDuration(5000);
imageview.startAnimation(rotateAnimation);
以自己的中心为原点旋转:
RotateAnimation rotateAnimation = 
new RotateAnimation(
0,
180,
Animation.RELATIVE_TO_SELF,
0.5f,
Animation.RELATIVE_TO_SELF,
0.5f);
rotateAnimation.setFillAfter(true);
rotateAnimation.setDuration(5000);
imageview.startAnimation(rotateAnimation);




4.透明补间动画:


Animation animation = new AlphaAnimation(1f,0.1f);
animation.setFillAfter(true);
animation.setDuration(5000);
imageview.startAnimation(animation);








5.多个动画同时进行:
AnimationSet set = new AnimationSet(false);
AlphaAnimation alphaAnimation = new AlphaAnimation(1f,0.1f);
alphaAnimation.setDuration(5000);
set.addAnimation(alphaAnimation);

TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,300);
translateAnimation.setDuration(5000);
set.addAnimation(translateAnimation);

set.setFillAfter(true);

imageview.startAnimation(set);


xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >


    <scale
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.5"
        android:toYScale="1.5"
        android:duration="5000" >
    </scale>


    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="5000"
        android:fromXDelta="100"
        android:fromYDelta="0"
        android:toXDelta="100"
        android:toYDelta="300" >
    </translate>


</set>




AnimationSet animation = (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.anim_set);
animation.setFillAfter(true);
imageview.startAnimation(animation);

Android开发之Tween(补间动画)完全解析(下)——代码实现

在上一篇文章中,我们详细讨论了Tween动画的xml的实现以及interpolator的使用,相信通过上篇文章大家对Tween动画的xml属性的配置会有一个详细的理解,当然这篇文章也是承接上篇文章,这...
  • dmk877
  • dmk877
  • 2016年07月24日 20:30
  • 1945

Android 动画系列之补间(Tween)动画详解

上一篇博客中写了逐帧动画(Frame)的使用,Android中除了支持逐帧动画(Frame)之外,也提供了对补间(Tween)动画的支持。补间动画就是指开发者只需要指定动画的开始、结束等“关键帧”,而...
  • Airsaid
  • Airsaid
  • 2016年06月05日 20:34
  • 9652

Android动画(一):View动画(补间动画)

一、动画的简单介绍: 在Android项目的开发过程中,如果某些控件或者界面突然的出现或者消失,会造成分厂差的用户体验。所以我们需要为特定的控件或者界面添加一些动画效果.二、分类:View动画(补间...
  • Afanbaby
  • Afanbaby
  • 2016年08月07日 10:00
  • 2033

Android 连续的补间动画(Animation/Tween)

通过Animation监听事件实现连续动画创建一个简单的xml文件,里面有一个< imageview>即可MainActivity.java:public class MainActivity ext...
  • zhengyikuangge
  • zhengyikuangge
  • 2016年03月17日 14:02
  • 623

android动画_补间动画_xml方式

一、项目目录结构 二、activity_main.xml界面 三、activity_main.xml代码
  • songyi160
  • songyi160
  • 2017年01月01日 22:54
  • 318

Android开发之Tween(补间动画)完全解析(上)——xml文件配置的实现

相信不管做了多长时间开发的人都用用过Tween动画,从刚开始工作到现在我也是用了N次Tween动画,但是每一次使用总感觉掌握的不够全面,所以花了点时间详细的总结了下Tween动画,其实在android...
  • dmk877
  • dmk877
  • 2016年07月22日 23:27
  • 5920

Android 控件移动补间动画

private void moveLine(ImageView imageView,float fromX,float toX,float fromY,float toY){         Ani...
  • cx415462822
  • cx415462822
  • 2017年02月15日 11:10
  • 409

Android 补间动画原理

这段时间项目中用到了动画,所以趁热打铁,看看动画原理 补间动画 使用举例 TranslateAnimation translateAnim = new TranslateAnimation(0, 1...
  • Mr_LiaBill
  • Mr_LiaBill
  • 2015年10月30日 13:53
  • 2226

【Android开发】动画范例2-旋转、平移、缩放和透明度渐变的补间动画

实现旋转、平移、缩放和透明度渐变的补间动画,具体实现如下: 1.在新建项目的res目录中,创建一个名为anim的目录,并在该目录中创建实现旋转、平移、缩放和透明度渐变的动画资源文件。 透明度渐变的...
  • u013517797
  • u013517797
  • 2015年05月19日 20:48
  • 1990

补间动画详解四 平移动画TranslateAnimation

TranslateAnimation是平移动画的类,负责View的位移。 TranslateAnimation类官方文档: https://developer.android.com/refe...
  • ruancoder
  • ruancoder
  • 2016年08月29日 19:07
  • 11648
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android动画之补间动画
举报原因:
原因补充:

(最多只允许输入30个字)