zoukankan      html  css  js  c++  java
  • animation- 动画效果实现(xml形式实现)

    1.定义xml动画

    1)在anim文件夹下定义xml文件

    解释:这个文件夹下面的文件会被默认为动画文件,如果这个文件不存在,需要自己创建

    display_result_anim.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
     <!--缩放动画-->
     <scale android:duration="300" android:fromXScale="2.0" android:fromYScale="2.0" android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:pivotX="50%" android:pivotY="50%" android:toXScale="1.0" android:toYScale="1.0" />
     <!--位置移动动画-->
     <translate android:duration="300" android:fromYDelta="154.5%" android:toYDelta="0" android:fromXDelta="-49.5%" android:toXDelta="0" > </translate>
     <!--透明度动画-->
     <alpha android:fromAlpha="1" android:toAlpha="0.5" android:duration="300" /> </set>

    display_input_anim.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <translate
            android:duration="300"
            android:fromXDelta="0"
            android:fromYDelta="44.1%"
            android:toXDelta="0"
            android:toYDelta="0" />
        <alpha
            android:fromAlpha="0"
            android:toAlpha="1"
            android:duration="300" />
    
    </set>

    2.代码中引用

    import android.view.animation.Animation;
    import android.view.animation.AnimationUtils;
    import android.view.animation.TranslateAnimation;
    
    
     private Animation myAnimationInput;
     private Animation myAnimationResult;
    
     myAnimationInput = AnimationUtils.loadAnimation(context, R.anim.display_input_anim);
     myAnimationResult = AnimationUtils.loadAnimation(context,R.anim.display_result_anim);
     myAnimationInput.setFillAfter(true);
     myAnimationResult.setFillAfter(true);
    
    EditText current = (EditText) getCurrentView();
    current.startAnimation(myAnimationInput);
    next.startAnimation(myAnimationResult);

    知识点总结:

    1.android:fromYDelta="44.1%" 它的属性值有三种形式

    (1)如果直接写33,表示的是距离这个动画拥有者(edittext)的值为33px,根据+ -决定是在拥有者上还是下 ;如果是写成33%,这个就是表示的,相对于动画拥有者自身尺寸的33%的距离,这个尺寸是动画拥有者最开始设定的尺寸,也就是不加动画的时候的尺寸;如果写成是33%p,那么就是相对于父容器的尺寸了

    (2)如果是强制写成33dp的话,会报错,说明不支持这么方式

    (3)如果是引用@dimen的话,你会发现引用值的结果是0,也就是没有动画效果,虽然它并不会报错

    2.各个动画的效果

    三种如上,最后一种是

    旋转动画

    <rotate
         android:fromDegrees="0"
         android:toDegrees="-360"
         android:pivotX="50%"
         android:pivotY="50%"
        android:duration="3000"
       />

    属性就是角度值,正负表示顺逆时针

  • 相关阅读:
    Linux下搭建PHP环境的参考文章小记
    jQuery遇到问题的小记
    小程序 login
    小程序编辑器vscode
    弹性布局详解——5个div让你学会弹性布局
    vue在页面嵌入别的页面或者是视频2
    VUE设置浏览器icon图标
    遮罩层出现后不能滚动 添加事件@touchmove.prevent
    vue 在script里写页面跳转
    axios post、get 请求参数和headers配置
  • 原文地址:https://www.cnblogs.com/zhangshuli-1989/p/zhangshuli_animation_1502119.html
Copyright © 2011-2022 走看看