• xml编写补间动画 PopupWindow实现出现退出的动画


    alpha 渐变透明动画效果
    scale 渐变尺寸伸缩动画效果
    translate 画面转换位置移动动画效果
    rotate 画面转移旋转动画效果

    Animation是所有动画《scale、alpha、rotate、translate》的基类,这里已scale为例,讲解下Animation所有属性及意义

    android:duration            动画持续时间,以毫秒为单位
    android:fillAfter              如果设置为true,控件动画结束时,保持动画最后时的状态
    android:fillBefore           如果设置为true,控件动画结束时,还原到动画开始前的状态
    android:fillEnabled        与android:fillBefore 效果相同
    android:repeatCount     重复次数 如果设置为infinite,则表示无限次重复动画
    android:repeatMode     重复类型,有reverse和restart两个值,reverse表示倒叙回放,restart表示重新播放一遍,必须与android:repeatCount一起使用才有效果,因为这里的意义是重复类型,即回放的动作   
    android:interpolator      插值器,指定动作的效果,比如弹跳,快速等
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    Scale动画

    Scale是Android的尺寸缩放动画,继承自基类Animation

    Scale的属性

    直接参照代码中的注释(ps:方便说明,直接使用#作为注释符)

      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    alpha 调节透明度

    android:fromAlpha         动画开始的透明度,取值范围0.0-1.0,0.0表示完全透明,1.0表示完全不透明
    android:toAlpha             动画结束的透明度,取值范围0.0-1.0
    
    • 1
    • 2

    rotate 旋转

    android:fromDegrees      开始旋转的角度位置,正值表示顺时针方向的度数,负值表示逆时针方向的度数
    android:toDegrees          结束旋转的角度位置,正值表示顺时针方向的度数,负值表示逆时针方向的度数
    android:pivotX                 旋转中心点X轴坐标,可以是数值,百分数,百分数p三种样式,比如50,50%,50%p;具体意义已经在scale标签中讲述,这里就不一 一作解释了
    android:pivotY                旋转中心点Y轴坐标,意义同上
    
    • 1
    • 2
    • 3
    • 4

    translate平移

    android:fromXDelta            起始点X轴坐标,可以是数值,百分数,百分数p三种样式,比如50,50%,50%p;具体意义已经在scale标签中讲述,这里就不作解释了
    android:fromYDelta            起始点Y轴坐标,意义同上
    android:toXDelta                结束点X轴坐标
    android:toYDelta                结束点Y轴坐标
    
    • 1
    • 2
    • 3
    • 4

    set 定义动作合集

    简单来说假如我想要的动画需要平移 旋转 透明度变化 缩放 那么在xml外层就需要使用set

    注意:如果使用到Set标签
    
    在Set标签中设置android:repeatCount是无效的,只能在子动画中重复次数才有效果。如果没有设置则默认为1次。如下图一
    对于android:duration和android:repeatMode则优先使用Set标签中设置的属性,如果Set标签中没有设置就使用子控件中的(Set没有设置动画时长,子动画一定要设置时长)。如下图一二
    android:fillAfter、android:fillBefore、android:fillEnabled属性只能在Set标签中设置,如果没有设置则使用默认的android:fillBefore="true",在子动画中设置是无效的。如下图三
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    案例 从右到左缩放透明度变化的动画

    
    
       
       
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在外部获取动画并设置给view

    Animation animation = AnimationUtils.loadAnimation(this, R.anim.anim_set);
    mTextView.startAnimation(animation);
    
    • 1
    • 2

    PopupWindow实现出现退出的动画

    如上述动画xml编写后 需要在styles.xml中编写如下内容

    
    
    • 1
    • 2
    • 3
    • 4

    android:windowEnterAnimation :弹窗展示动画
    android:windowExitAnimation:弹窗退出动画

    				View popView = LayoutInflater.from(itemView.getContext()).inflate(R.layout.item_dislike_btn, null); //布局加载器加载菜单布局
                    PopupWindow popup = new PopupWindow(popView, 300, 80); // 声明 设置宽高
                    // 设置成点击弹窗以外位置让弹窗隐藏
                    popup.setOutsideTouchable(true);
                    popup.setFocusable(true);
                    // 设置弹窗动画 
                    // 注意: 必须在showAsDropDown方法前设置动画 否则不生效
                    popup.setAnimationStyle(R.style.anim_dislike_btn);
                    // 设置弹窗弹出 并设置位置
                    popup.showAsDropDown(moreButton, -230, -65, Gravity.CENTER);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
  • 相关阅读:
    selenuim【1】($x(‘xpath语法’)、WebDriverWait())
    PPT导出PDF时保持图像高清的方法
    软件工程填空题(50题)
    java基础 特殊文件
    故障管理:故障定级和定责
    TCP延迟应答和捎带应答及“粘包问题“和TCP异常
    Thread类的基本用法
    acwing 795前缀和
    微信小程序请求request封装
    python 多进程并行处理
  • 原文地址:https://blog.csdn.net/Azadoo/article/details/125906512