Android动画:Transition
来源:互联网 发布:如何修改淘宝账户名称 编辑:程序博客网 时间:2024/05/21 15:07
scene:场景,transition:转换。
BasicTransition
getSceneForLayout()+TransitionManager.go(scene3)+new Scene()需要API>=19
demo中共有3个scene,分别是scene1、scene2、scene3,对应的xml分别是scene1.xml、scene2.xml、scene3.xml,scene本身的根布局的id都是一样的,这里是container
;
效果图
scene_root:
存放scene的布局
<LinearLayout> .... <FrameLayout android:id="@+id/scene_root" android:layout_width="match_parent" android:layout_height="match_parent"> <include layout="@layout/scene0"/> </FrameLayout></LinearLayout>
scene1.xml
scene本身的根布局的id都是一样的,这里是container
;
<?xml version="1.0" encoding="utf-8"?><RelativeLayout android:id="@+id/container" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <View android:id="@+id/view1" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentBottom="true" android:background="@color/colorAccent"/> <View android:id="@+id/view2" android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentBottom="true" android:layout_alignParentEnd="true" android:background="@color/colorPrimary"/> <View android:id="@+id/view3" android:layout_width="100dp" android:layout_height="100dp" android:layout_centerHorizontal="true" android:background="@color/color1"/></RelativeLayout>
创建scene的2种方法
第一种:试了下new Scene()无效果
Scene scene1 = new Scene(scene_root, container)scene_root:存放scene的布局container:scene本身的根布局
第二种:
Scene scene1 = Scene.getSceneForLayout(scene_root, R.layout.scene1, context);第一个参数:存放scene的布局第二个参数:scene第三个参数:context
变换scene
//第一种:TransitionManager.go(scene1);//第2种:TransitionManager transitionManager = new TransitionManager();transitionManager.transitionTo(scene3)
步骤
- 创建scene
- 转换scene
对应的方法分别是:
Scene scene1 = Scene.getSceneForLayout(scene_root, R.layout.scene1, context);TransitionManager.go(scene1);
自定义TransitionManager
TransitionInflater transitionInflater = TransitionInflater.from(context);TransitionManager transitionManager = transitionInflater.inflateTransitionManager(R.transition.custom_transition_manager, scene_root);
custom_transition_manager.xml是放在res/transition文件夹中
<?xml version="1.0" encoding="utf-8"?><transitionManager xmlns:android="http://schemas.android.com/apk/res/android"> <transition android:toScene="@layout/scene3" android:transition="@transition/changebounds_fadein_transition"/></transitionManager>
其中changebounds_fadein_transition.xml也是放在value/transition文件夹中
<?xml version="1.0" encoding="utf-8"?><transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <changeBounds/> <fade android:fadingMode="fade_in_out" android:duration="500"> <targets> <target android:targetId="@id/tv"/> </targets> </fade></transitionSet>
没有scene怎么实现动画效果
代码
transitionManager.beginDelayedTransition(scene_root);View view2 = findViewById(R.id.view2);ViewGroup.LayoutParams params = view2.getLayoutParams();int dimension = (int) getResources().getDimension(R.dimen.dimen50);params.width = dimension;params.height = dimension;view2.requestLayout();
效果图
其它
参考:https://github.com/googlesamples/android-BasicTransition
demo:http://git.oschina.net/AnimationDemo/basictransition01
转换动画
Android Developer Guild :https://developer.android.google.cn/training/material/animations.html#Reveal
(还没太搞明白)
需要在API>=21,首先,在定义您从材料主题继承的风格时,使用 android:windowContentTransitions 属性启用窗口内容转换。您也可在您的风格定义中指定进入、退出以及共享元素转换:
<style name="BaseAppTheme" parent="android:Theme.Material"> <!-- enable window content transitions --> <item name="android:windowContentTransitions">true</item> <!-- specify enter and exit transitions --> <item name="android:windowEnterTransition">@transition/explode</item> <item name="android:windowExitTransition">@transition/explode</item> <!-- specify shared element transitions --> <item name="android:windowSharedElementEnterTransition"> @transition/change_image_transform</item> <item name="android:windowSharedElementExitTransition"> @transition/change_image_transform</item></style>
<!--API>=21--><item name="android:windowContentTransitions">true</item><item name="android:windowTransitionBackgroundFadeDuration">5000</item><item name="android:windowEnterTransition">@android:transition/slide_right</item><item name="android:windowExitTransition">@android:transition/slide_right</item>
0 0
- Android自定义Transition动画
- Android动画:Transition
- Android Transition动画
- Android自定义Transition动画
- android 动画 过渡动画 transition
- Android 笔记 transition / 转换动画
- Android Transition动画学习笔记
- Android动画--Activity过渡动画 Transition
- Android Transition(Android过渡动画)
- transition动画
- android 5.x—过渡动画Transition
- android 5.x转场动画Transition
- Android 过渡动画(Transition Animation)
- Android Transition FrameWork实现转场动画
- Android Transition动画学习笔记 2
- android转场动画&共享元素&另外一种动画Transition
- Android Transition动画进入退出动画无效或重叠
- Android学习笔记之Transition——Transition简单动画(1)
- 垃圾信息防御措施
- expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annot
- ios UINavigationController如何连续返回两级pop
- Docker初级应用
- Android 插件化原理解析——Activity生命周期管理
- Android动画:Transition
- 屏幕滚动 固定导航栏
- Spring配置使用多数据源
- cucumber+watir+ruby 自动化测试-1
- Activity的Window创建及DecorView的添加(Android开发艺术探索学习笔记)
- ecplise 使用 git
- 关于expandablelistview展开潜存的问题
- Android线程管理之Thread使用总结
- JS基础语法