技术控

    今日:40| 主题:49101
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] Material Animations 1:Content Transitions

[复制链接]
Thedeathoflove 发表于 2016-10-4 21:22:48
147 2

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
同overridePendingTransition()方法执行效果类似
  Content Transition也称为Transitions between Activities,或Enter/Exit Transition,包括下图4个部分(本图截取自Udacity):
   
Material Animations 1:Content Transitions-1 (private,between,效果图,Enter,动画)

  
       
  • 1. Exit A : 离开A界面时的转换动画   
  • 2. Enter B : 进入B界面时的转换动画   
  • 3. Return B : 从B界面返回时的转换动画;可不设置,默认执行 Enter B 的逆过程   
  • 4. Reenter A : 重新进入A界面时的转换动画;可不设置,默认执行 Exit A 的逆过程  
  二、效果图

Material Animations 1:Content Transitions-2 (private,between,效果图,Enter,动画)

  三、实现方法

  编码实现

  ActivityA.java
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_a);    setupWindowAnimations();}private void setupWindowAnimations() {    Slide slide = new Slide();    slide.setDuration(500);    slide.setSlideEdge(Gravity.LEFT);    getWindow().setExitTransition(slide);//    getWindow().setReenterTransition(slide);}[/code]       ActivityB.java
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_b);    setupWindowAnimations();}private void setupWindowAnimations() {    Fade fade = new Fade();    fade.setDuration(500);    getWindow().setEnterTransition(fade);//    getWindow().setReturnTransition(slide);}[/code]       由于大部分相关API只支持API 19以上版本,甚至只支持API 21以上版本,因此需要添加如下判断:
         [code]if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {  ...}[/code]       XML & Code实例化实现

  定义XML

  res/transition-v21/fade.xml
         [code][/code]       res/transition-v21/slide.xml
         [code][/code]       Code实例化

  ActivityA.java
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_a);    setupWindowAnimations();}private void setupWindowAnimations() {    Slide slide = TransitionInflater.from(this).inflateTransition(R.transition.slide);    getWindow().setExitTransition(slide);}[/code]       ActivityB.java
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_b);    setupWindowAnimations();}private void setupWindowAnimations() {    Fade fade = TransitionInflater.from(this).inflateTransition(R.transition.fade);    getWindow().setEnterTransition(fade);}[/code]       XML & Style声明式实现(强烈推荐)

  定义XML

  如果没有其它属性要求,本步骤可跳过,直接在下一步使用系统定义好的XML
   同 XML & Code实例化实现 一样,声明XML文件
  res/transition-v21/fade.xml
         [code][/code]       res/transition-v21/slide.xml
         [code][/code]       Style文件声明

  res/values-v21/styles.xml
         [code][/code]       也可以直接使用系统提供的过渡效果:
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_b);    setupWindowAnimations();}private void setupWindowAnimations() {    Fade fade = new Fade();    fade.setDuration(500);    getWindow().setEnterTransition(fade);//    getWindow().setReturnTransition(slide);}0[/code]       声明打开Content Transitions(非必须)

  如果上一个步骤继承的父主题不是AppCompt相关主题,还需要在styles.xml文件中声明:
         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_b);    setupWindowAnimations();}private void setupWindowAnimations() {    Fade fade = new Fade();    fade.setDuration(500);    getWindow().setEnterTransition(fade);//    getWindow().setReturnTransition(slide);}1[/code]       跳转

         [code]@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_b);    setupWindowAnimations();}private void setupWindowAnimations() {    Fade fade = new Fade();    fade.setDuration(500);    getWindow().setEnterTransition(fade);//    getWindow().setReturnTransition(slide);}2[/code]
友荐云推荐




上一篇:TOC的生成
下一篇:iOS快速开发必备
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

zhongtian8888 发表于 2016-10-5 20:03:04
看电影,我都不耐烦看文艺片…
回复 支持 反对

使用道具 举报

BAHTE 发表于 2016-11-17 23:52:40
画面太美我不敢看
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表