MaterialDesign(三)

Activity过渡动画

提供了三种Transition类型的动画

进入

决定activity中的所有视图怎么出现在屏幕

进入效果包括:
explode(分解)
slide(滑动)
fade(淡出)

退出

决定activity中的所有视图怎么消失在屏幕

退出效果:同上

进入和退出效果的demo

    //进入效果
    getWindow().setEnterTransition(new Explode());
    getWindow().setEnterTransition(new Slide());
    getWindow().setEnterTransition(new Fade());
    //退出效果
    getWindow().setExitTransition(new Explode());
    getWindow().setExitTransition(new Slide());
    getWindow().setExitTransition(new Fade());


    //使用startActivity(new Intent(), ActivityOptions.makeSceneTransitionAnimation(this).toBundle())代替startActivity(intent)即可
    startActivity(new Intent(), ActivityOptions.makeSceneTransitionAnimation(this).toBundle());
    //在被打开的Activity中需要设置如下代码
    getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
    //或在样式中
    <item name="android:windowContentTransitions">true</item>

共享元素

决定两个activity之间的过渡,怎么共享它们的视图

共享元素:
changeBounds:改变目标视图的布局边界
changClipBounds:裁剪目标视图的边界
changeTransform:改变目标视图的缩放比例和旋转角度
cahngeImageTransfrom:改变目标图片的大小和缩放比例

demo:

   //通过android:transitionName确定那一个是被共享的元素
    <ImageView
    android:id="@+id/iv"
    android:src="@mipmap/ic_launcher"
    android:transitionName="iv"
    android:layout_centerInParent="true"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>   
    //取得该控件
    iv = (ImageView) findViewById(R.id.iv);
    //startactivity方法中makeSceneTransitionAnimation(Context,被共享的view,transitionName);
    startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,iv,"iv").toBundle());
    //如果有多个共享元素可以通过Pair.create(view,name)来实现
    Pair<View, String> p1 = Pair.create((View)iv, "iv");
    Pair<View, String> p2 = Pair.create((View)iv2, "iv2");
    startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this,p1,p2).toBundle());
需求:不同的页面设置不同的效果
    //通过设置intent的flag来设置不同的动画效果,在被打开的activity中通过flag来设置动画效果
    intent.putExtra("flag",0);
    getIntent().getIntExtra("flag",default code);
    switch(code){//参考进入和退出效果的内容}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值