android 共享元素返回按钮,Android篇 Activity共享元素跳转

Android篇 Activity共享元素跳转

什么叫Activity共享元素跳转?我们来看看下面的效果,其实就是在这个转场动画中,整个子布局都是共享元素,当然也可以是图片和文字的任何控件,具体怎么实现这种效果呢?

以MainActivity跳转到HomeDetailActivity为例。

第一步 在需要跳转到HomeDetailActivity设置共享的元素设置transtionName,可以在xml中设置android:transitionName

android:id="@+id/rl_container"

android:background="@color/white"

android:layout_width="match_parent"

android:transitionName="CONTENT"

android:layout_height="match_parent"/>

或者在java代码中用ViewCompat.setTransitionName(@NonNull View view, String transitionName)设置

ViewCompat.setTransitionName(mViewBinding.rlContainer, "CONTENT");

第二步 在开始跳转的MainActivity增加转场过渡

ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(

this, new Pair(v, "CONTENT"));

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

// ActivityCompat是android支持库中用来适应不同android版本的

ActivityCompat.startActivity(this, intent, activityOptions.toBundle());

多个控件过渡可以在后面增加多个Pair(View v, String transtionName)

OK 结束啦。试一下可以实现完美的转场啦~~~

那怎么退出来的时候还保持转场回来呢?

第三步 结束转场的HomeDetailActivity,在按物理返回键,以及返回按钮的地方加上

if (Build.VERSION.SDK_INT >= 21) {

finishAfterTransition();

} else {

finish();

}

当HomeDetailActivity结束转场的过程中,你会发现出现背景黑屏的问题,解决办法:在styles.xml配置一个透明背景的样式并配置给HomeDetailActivity。

@color/tran_white

true

在colos.xml加上#00FFFFFF

AndroidManifest.xml给注册的HomeDetailActivity配置透明背景样式

android:name=".HomeDetailActivity"

android:theme="@style/DetailActivityStyle" />

这种处理方法在7.0及以下的设备还是会出现黑屏情况。。(QAQ不知道是不是三星Galaxy太强硬嗯。。)

小编采用的终极解决办法是在HomeDetailActivity结束时,给window设置一个透明背景图片,即java代码关闭时更改为

if (Build.VERSION.SDK_INT >= 21) {

# 给window设置透明背景图片

ColorDrawable colorDrawable = new ColorDrawable();

colorDrawable.setColor(getResources().getColor(R.color.white));

colorDrawable.setAlpha(0);

getWindow().setBackgroundDrawable(colorDrawable);

finishAfterTransition();

} else {

finish();

}

? 更多好文欢迎关注我的公众号~

1460000020343794?w=258&h=258

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值