在Fragment如何使用共享元素转场动画

本文介绍在Fragment中实现共享元素转场动画的方法。由于Fragment的startActivity()方法不支持ActivityOptionsCompat,需要通过ActivityCompat.startActivity()进行替代。示例代码展示了如何指定共享视图元素并启动Activity。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Fragment如何使用共享元素转场动画

Fragment的startActivity()方法无法传入ActivityOptionsCompat,所以需要使用
ActivityCompat.startActivity()来进行跳转

事例代码:


           // 这里指定了共享的视图元素
            ActivityOptionsCompat options = ActivityOptionsCompat
                    .makeSceneTransitionAnimation(getActivity(), shareView, "image");
            ActivityCompat.startActivity(getActivity(), intent, options.toBundle());

Android Fragment切换时,如果希望某些UI元素在转场过程中保持不变(即非共享元素),可以利用`FragmentTransaction`提供的动画功能来控制特定视图的动画效果。在非共享元素转场中,通常有以下几种常见策略: 1. **设置动画**:当开始一个新Fragment替换或添加到现有容器时,你可以指定`setCustomAnimations()`方法,为进入(enter)、返回(exit)、前向进栈(popEnter)、出栈(popExit)等阶段分别提供自定义动画资源。这允许你在动画中隔离那些不应改变的非共享元素。 ```java FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right); transaction.replace(R.id.fragment_container, new MyFragment()); transaction.commit(); ``` 这里`R.anim.slide_in_left`和`R.anim.slide_out_right`是预定义的动画资源文件,分别定义了进入和退出片段的动画。 2. **使用`animate()`**:如果你更倾向于基于时间的动画,可以使用`FragmentTransaction#animate()`方法,然后对目标View应用`ObjectAnimator`或`Transition`。这样可以精确控制每个元素的动画属性,如位移、缩放和透明度变化。 ```java View nonSharedElement = findViewById(R.id.non_shared_element); transaction.animate(nonSharedElement) .translationX(0) // 设置初始位置 .alpha(1.0f) // 设置初始透明度 .duration(500); // 动画持续时间 ``` **相关问题--:** 1. 如何在Fragment的生命周期方法中响应转场动画完成? 2. 安卓如何避免非共享元素转场过程中闪烁? 3. `FragmentTransaction`中有哪些其他可用于设置动画的方法?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值