Android MaterialDesign 转场动画

为什么使用?

  现在很多项目都有很炫酷的转场动画,我们也必须得有,让项目更上档次,并且提高自己

知识点:ActivityOptionsCompat类以及共享元素的使用

转场动画分为两类:共享元素转场和普通转场

 使用转场动画的前提是都得给予权限,给权限有两种方式

     //方法一:
      getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
     //方法二:
     修改主题:<item name="android:windowContentTransitions">true</item>

一、以前使用转场动画的方式

  startActivity(new Intent(this, xxxx.class));
   overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);

二、使用共享元素的转场方式
   使用android:transitionName设置相同名字切换

      <ImageView
                android:id="@+id/activity_main_zhuanchang"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:contentDescription="转场动画"
                android:onClick="okhttp"
                android:src="@mipmap/ic_launcher"
                android:text="Okhttp/NoHttp"
                android:transitionName="iv_test" />

按返回键的时候自动实现了转场动画,原因

    public void onBackPressed() {
   finishAfterTransition();
  }
  public void finishAfterTransition() {
   if (!mActivityTransitionState.startExitBackTransition(this)) {
       finish();
   }
  }

1、单个共享元素跳转方式:

 ActivityOptionsCompat optionsCompat=ActivityOptionsCompat.makeSceneTransitionAnimation( this,imageView_zhuanchang,"iv_test");

Intent intent=new Intent(this, OkHttpActivity.class);

 startActivity(intent,optionsCompat.toBundle());

2、多个共享元素跳转方式:

 ActivityOptionsCompat optionsCompat1=ActivityOptionsCompat
                .makeSceneTransitionAnimation(this,Pair.create((View)imageView_zhuanchang,"iv_test"),Pair.create((View)button,"button"));

Intent intent=new Intent(this, OkHttpActivity.class);

 startActivity(intent,optionsCompat1.toBundle());

当然还可以这样:

 //如果有共享元素,可以设置共享元素,那么他会按照共享元素执行动画,其他子view也会按照动画执行
ActivityOptionsCompat optionsCompat2=ActivityOptionsCompat.makeSceneTransitionAnimation(MainActivity.this);

Intent intent=new Intent(this, OkHttpActivity.class);

 startActivity(intent,optionsCompat2.toBundle());

说明:1、ActivityOptionsCompat使用它,是为了兼容低版本的效果,虽然在低版本上没有卵用,但是不会报错。ActivityOptions类。只支持API21以上的版本。

            2、 ActivityOptionsCompat中还有别的动画类型,自己可以试试

            3、android:transitionName在你点击的控件和需要的控件都得设置,且名字相同才行

三、普通的转换动画(只有API 21以上才有下面自带效果)

   这是三种系统自带的滑动效果(Slide)、展开效果Explode、渐变显示隐藏效果Fade

Fade fade=new Fade();
        fade.setDuration(1000);
      getWindow().setExitTransition(fade);//出去的动画
        getWindow().setEnterTransition(fade);//进来的动画

提示:直接调用finish是没有动画的,原因看finish结束源码

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值