android 使用动画实例[1]

Activity切换动画

当前可以通过activity.overridePendingTransition()设置
通过样式设置在android:theme="@style/AppTheme"中配置
<item name="android:windowAnimationStyle">@style/myWindowAnim</item>
在使用中的问题

<style name="myWindowAnim" parent="@android:style/Animation.Activity">
       <!-- 和overridePendingTransition同时起作用-->
       <item name="android:windowEnterAnimation">@anim/slide_right_in</item>
       <item name="android:windowExitAnimation">@anim/slide_right_out</item>

       <!--设置windowIsTranslucent=true 以下则没效果-->
       <!--启动新界面 新启动的界面 当面界面关闭-->
       <item name="android:activityOpenEnterAnimation">@anim/slide_left_in</item>
       <item name="android:activityOpenExitAnimation">@anim/slide_right_out</item>
       <!--退出界面 退出老界面进入 当前界面关闭-->
       <item name="android:activityCloseEnterAnimation">@anim/slide_right_in</item>
       <item name="android:activityCloseExitAnimation">@anim/slide_left_out</item>
       <!--<item name="android:activityOpenEnterAnimation">@anim/activity_out</item>
       <item name="android:activityOpenExitAnimation">@anim/activity_in</item>-->
   </style>

查看Animation.Activity源码

<style name="Animation.Activity">
        <item name="activityOpenEnterAnimation">@anim/activity_open_enter</item>
        <item name="activityOpenExitAnimation">@anim/activity_open_exit</item>
        <item name="activityCloseEnterAnimation">@anim/activity_close_enter</item>
        <item name="activityCloseExitAnimation">@anim/activity_close_exit</item>
        <item name="taskOpenEnterAnimation">@anim/task_open_enter</item>
        <item name="taskOpenExitAnimation">@anim/task_open_exit</item>
        <item name="launchTaskBehindTargetAnimation">@anim/launch_task_behind_target</item>
        <item name="launchTaskBehindSourceAnimation">@anim/launch_task_behind_source</item>
        <item name="taskCloseEnterAnimation">@anim/task_close_enter</item>
        <item name="taskCloseExitAnimation">@anim/task_close_exit</item>
        <item name="taskToFrontEnterAnimation">@anim/task_open_enter</item>
        <item name="taskToFrontExitAnimation">@anim/task_open_exit</item>
        <item name="taskToBackEnterAnimation">@anim/task_close_enter</item>
        <item name="taskToBackExitAnimation">@anim/task_close_exit</item>
        <item name="wallpaperOpenEnterAnimation">@anim/wallpaper_open_enter</item>
        <item name="wallpaperOpenExitAnimation">@anim/wallpaper_open_exit</item>
        <item name="wallpaperCloseEnterAnimation">@anim/wallpaper_close_enter</item>
        <item name="wallpaperCloseExitAnimation">@anim/wallpaper_close_exit</item>
        <item name="wallpaperIntraOpenEnterAnimation">@anim/wallpaper_intra_open_enter</item>
        <item name="wallpaperIntraOpenExitAnimation">@anim/wallpaper_intra_open_exit</item>
        <item name="wallpaperIntraCloseEnterAnimation">@anim/wallpaper_intra_close_enter</item>
        <item name="wallpaperIntraCloseExitAnimation">@anim/wallpaper_intra_close_exit</item>
        <item name="fragmentOpenEnterAnimation">@animator/fragment_open_enter</item>
        <item name="fragmentOpenExitAnimation">@animator/fragment_open_exit</item>
        <item name="fragmentCloseEnterAnimation">@animator/fragment_close_enter</item>
        <item name="fragmentCloseExitAnimation">@animator/fragment_close_exit</item>
        <item name="fragmentFadeEnterAnimation">@animator/fragment_fade_enter</item>
        <item name="fragmentFadeExitAnimation">@animator/fragment_fade_exit</item>
    </style>

对话框弹出动画

new Dialog(context, R.style.MyDialog);
第二个参数样式中添加
<item name="android:windowAnimationStyle">@style/dialogWindowAnim</item>

view.addView() removeView() setVisibility()动画

view的父容器设置vg.setLayoutTransition(mlayoutTransition);

// 生成自定义动画
    private LayoutTransition setupCustomAnimations() {
        LayoutTransition mTransition = new LayoutTransition();
        ObjectAnimator animIn = (ObjectAnimator) AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_left_in);
        mTransition.setAnimator(LayoutTransition.APPEARING, animIn);
        ObjectAnimator animOut = (ObjectAnimator) AnimatorInflater.loadAnimator(getActivity(), R.animator.slide_left_out);
        mTransition.setAnimator(LayoutTransition.DISAPPEARING, animOut);
        return mTransition;
    }

CHANGE_APPEARING CHANGE_DISAPPEARING 的实现可参考LayoutTransition的源码实现较复杂,

Paste_Image.png

如若不设置left top right bottom 则受影响的消失的会与消失的重叠

setAnimator()的第1个参数设置的值
1、APPEARING - A flag indicating the animation that runs on items that are appearing in the container.
2、CHANGE_APPEARING - A flag indicating the animation that runs on items that are changing due to a new item appearing in the container.
3、DISAPPEARING - A flag indicating the animation that runs on items that are disappearing from the container.
4、CHANGE_DISAPPEARING - A flag indicating the animation that runs on items that are changing due to an item disappearing from the container.

mTransition.setduration()

Gone 时,不可见的view 使用DISAPPEARING动画,受影响的使用CHANGE_DISAPPEARING动画
其它

res/animator/slide_left_in.xml

<?xml version="1.0" encoding="utf-8"?>
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="30000"
    android:propertyName="rotationX"
    android:valueFrom="90"
    android:valueTo="0"
    android:valueType="floatType" />

属性动其他定义示例
动画同时执行

<set xmlns:android="http://schemas.android.com/apk/res/android">

<objectAnimator

android:interpolator="@android:interpolator/decelerate_quint"

android:valueFrom="0dp" android:valueTo="-100dp"

android:valueType="floatType"

android:propertyName="translationX"

android:duration="@android:integer/config_mediumAnimTime" />

<objectAnimator

android:interpolator="@android:interpolator/decelerate_quint"

android:valueFrom="1.0" android:valueTo="0.0"

android:valueType="floatType"

android:propertyName="alpha"

android:duration="@android:integer/config_mediumAnimTime" />

</set>

参考博客

view.setVisibility()动画

android:animateLayoutChanges="true"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,519评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,842评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,544评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,742评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,646评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,027评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,513评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,169评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,324评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,268评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,299评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,996评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,591评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,667评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,911评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,288评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,871评论 2 341

推荐阅读更多精彩内容