Android 动画解释 - XML

Android 动画解释 - XML

目录

alpha 动画效果

这种动画主要实现渐出

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
    <alpha
        android:duration="1000"
        android:fromAlpha="0.0"
        android:toAlpha="1.0" />
    <!--
     透明度控制动画效果 alpha
        浮点型值:
            fromAlpha 属性为动画起始时透明度
            toAlpha   属性为动画结束时透明度
            说明: 
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字
        
        长整型值:
            duration  属性为动画持续时间
            说明:     
                时间以毫秒为单位

    -->
</set>

返回

scale动画效果

这种动画主要实现从小到大缩放

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

    <scale
        android:duration="1000"
        android:fillAfter="false"
        android:fromXScale="0.0"
        android:fromYScale="0.0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="1.4"
        android:toYScale="1.4" />

</set><!--
     尺寸伸缩动画效果 scale
       属性:interpolator 指定一个动画的插入器
        在我试验过程中,使用android.res.anim中的资源时候发现
        有三种动画插入器:
            accelerate_decelerate_interpolator  加速-减速 动画插入器
            accelerate_interpolator        加速-动画插入器
            decelerate_interpolator        减速- 动画插入器
        其他的属于特定的动画效果
      浮点型值:
         
            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸    
            toXScale   属性为动画结束时 X坐标上的伸缩尺寸     
        
            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸    
            toYScale   属性为动画结束时Y坐标上的伸缩尺寸    
        
            说明:
                 以上四种属性值    
    
                    0.0表示收缩到没有 
                    1.0表示正常无伸缩     
                    值小于1.0表示收缩  
                    值大于1.0表示放大
        
            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置
        
            说明:
                    以上两个属性值 从0%-100%中取值
                    50%为物件的X或Y方向坐标上的中点位置
        
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位

        布尔型值:
            fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用

-->

返回

translate动画效果

这种动画主要是画面转换位置,从而移动的效果

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

    <translate
        android:duration="2000"
        android:fromXDelta="30"
        android:fromYDelta="30"
        android:toXDelta="-80"
        android:toYDelta="300" />
        
    <!--
     translate 位置转移动画效果
        整型值:
            fromXDelta 属性为动画起始时 X坐标上的位置    
            toXDelta   属性为动画结束时 X坐标上的位置
            fromYDelta 属性为动画起始时 Y坐标上的位置
            toYDelta   属性为动画结束时 Y坐标上的位置
            注意:
                     没有指定fromXType toXType fromYType toYType 时候,
                     默认是以自己为相对参照物             
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位



    -->

</set>

返回

rotate动画效果

这种动画主要实现画面转移旋转的效果

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

    <rotate
        android:duration="3000"
        android:fromDegrees="0"
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toDegrees="+350" />
    <!--
     rotate 旋转动画效果
       属性:interpolator 指定一个动画的插入器
             在我试验过程中,使用android.res.anim中的资源时候发现
             有三种动画插入器:
                accelerate_decelerate_interpolator   加速-减速 动画插入器
                accelerate_interpolator               加速-动画插入器
                decelerate_interpolator               减速- 动画插入器
             其他的属于特定的动画效果
                           
       浮点数型值:
            fromDegrees 属性为动画起始时物件的角度    
            toDegrees   属性为动画结束时物件旋转的角度 可以大于360度   

        
            说明:
                     当角度为负数——表示逆时针旋转
                     当角度为正数——表示顺时针旋转              
                     (负数from——to正数:顺时针旋转)   
                     (负数from——to负数:逆时针旋转) 
                     (正数from——to正数:顺时针旋转) 
                     (正数from——to负数:逆时针旋转)       

            pivotX     属性为动画相对于物件的X坐标的开始位置
            pivotY     属性为动画相对于物件的Y坐标的开始位置
                
            说明:        以上两个属性值 从0%-100%中取值
                         50%为物件的X或Y方向坐标上的中点位置

        长整型值:
            duration  属性为动画持续时间
            说明:       时间以毫秒为单位

    -->

</set>

返回

activity 中添加代码


 Animation animation=null;
 animation= AnimationUtils.loadAnimation(this,R.anim.my_turn1);
 view1.setAnimation(animation);
 
 //实现延时关闭效果
 new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                igView.setVisibility(View.GONE);
            }
        },3000);

需要添加这行代码,便可以实现动漫效果转出。

返回

使用ViewFlipper动态播放图片

首先,得到xml文件中,开辟一个ViewFlipper

<ViewFlipper
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dp"
        android:layout_width="270dp"
        android:layout_height="480dp"
        android:background="@drawable/bg_surrond"
        android:layout_alignParentTop="true"
        android:id="@+id/viewMyFlipper"
        android:inAnimation="@anim/right_in"
        android:outAnimation="@anim/left_out"
        >

我用的是RelativeLayout,所以下面针对的是RelativeLayout的一些东西

解释一下:

  • layout_centerHorizontal,这是设置布局是否是水平中间的,有true,false选项
  • layout_marginTop布局距离顶部多远,使用dp为单位
  • layout_width设置布局的宽度,以dp为单位
  • layout_height设置布局的长度,以dp为单位
  • background设置背景,在这里,我设置了图片框框
  • id添加布局id
  • inAnimation设置进入动漫
  • outAnimation设置出去的动漫

然后便是转入转出的动漫效果

在anim中写xml文件,进行动画转换

返回

从右进入


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="1000"
    android:fromXDelta="100%p"
    android:toXDelta="0%p"
    />
</set>

返回

从左出去


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
    android:duration="1000"
    android:fromXDelta="0%p"
    android:toXDelta="-100%p"/>
</set>

返回

其中的Java代码

//声明空间
ViewFlipper flipper;
在创建函数中书写需要的东西
protected void on create(){
			flipper=findViewById(R.id.viewMyFlipper);
        flipper.startFlipping();//开始滑动
        for (int value : resId)//选自己的图片,resID是我的一个int的一个数组,里面放置的是R.drawable.XXX的图片文件
            flipper.addView(getImageView(value));
}
//自定义函数
private View getImageView(int redId) {
        ImageView image=new ImageView(this);
        image.setBackgroundResource(redId);
        return image;
}

经过以上的书写,就可以执行图片转换了。

返回


----->原网址<-----

posted @ 2020-03-15 21:47  野生的Lemon柠檬  阅读(277)  评论(0编辑  收藏  举报

呱呱呱呱呱🐸