android p过度动画,android 过渡动画

一.Activity的转场动画

1.overridePendingTransition(enterAnim, exitAnim);

重写Activity的 overridePendingTransition 方法;

需要四个anim目录下的xml文件

// 在finish或startActivity 方法 之后,立刻调用 overridePendingTransition 设置activity 切换的动画

// 参数一:开启的activity执行的动画

// 参数二:结束的activity执行的动画

执行切换到下一个页面的动画

overridePendingTransition(R.anim.next_in, R.anim.next_out);

// 执行切换到上一个页面的动画

overridePendingTransition(R.anim.pre_in, R.anim.pre_out);

next_in

android:duration="500"

android:fromXDelta="100%p"

android:toXDelta="0" >

next_out

android:duration="500"

android:fromXDelta="0"

android:toXDelta="-100%p" >

pre_in

android:duration="500"

android:fromXDelta="-100%p"

android:toXDelta="0" >

pre_out

android:duration="500"

android:fromXDelta="0"

android:toXDelta="100%p" >

2.makeScaleUpAnimation

makeScaleUpAnimation

这种方式个人感觉用途还是很广的,效果就是不断的 放大一个view,进而进行activity的过度, 看代码,

private void launch(View view) { ActivityOptionsCompat compat =

ActivityOptionsCompat.makeScaleUpAnimation(view, view.getWidth() / 2, view.getHeight() / 2, 0, 0);

ActivityCompat.startActivity(this, new Intent(this, Activity2.class), compat.toBundle());

}

第1个参数是scale哪个view的大小,第2和3个参数是以view为基点,从哪开始动画,这里是该view的中心,4和5参数是新的activity从多大开始放大,这里是从无到有的过程。

3.多个view的协作 makeSceneTransitionAnimation

代码为:

private void launch2() { Pair imagePair = Pair.create((View)imageView,

getString(R.string.image)); Pair textPair = Pair.create((View)textView,

getString(R.string.name)); ActivityOptionsCompat compat = ActivityOptionsCompat

.makeSceneTransitionAnimation(this, imagePair, textPair); ActivityCompat.startActivity(this, new

Intent(this, makeSceneTrans.class), compat.toBundle());

}

xml 文件为:

mainactivity

android:textSize="20sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentBottom="true"

android:layout_centerHorizontal="true"

android:text="makeSceneTrans 多view协作"

android:transitionName="@string/name" />

android:id="@+id/image"

android:layout_width="100dp"

android:layout_height="100dp"

android:layout_above="@id/text"

android:layout_centerHorizontal="true"

android:src="@drawable/ic_avatar3"

android:transitionName="@string/image" />

activity2

android:layout_width="wrap_content"

android:layout_height="300dp"

android:layout_alignParentTop="true"

android:layout_centerHorizontal="true"

android:src="@drawable/ic_avatar3"

android:scaleType="fitXY"

android:transitionName="@string/image" />

android:id="@+id/text"

android:textSize="20sp"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_below="@id/image"

android:layout_centerHorizontal="true"

android:text="makeSceneTrans 返回"

android:transitionName="@string/name" />

ImageView的android:transitionName属性,我们指定为name是image的string,第二个activity的布局文件也有一个transitionName是name为image的string

其中最重要的是 transitionName 这个属性 需要协调的view都添加这个属性 ,告诉系统都是谁参与。

that's all

这些应该能满足大部分的 activity的转场动画了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值