Fragment之间如何使用addSharedElement实现共享动画
时间: 2024-10-16 21:19:58 浏览: 24
Activity之间以及fragment之间跳转 共享元素动画实现
5星 · 资源好评率100%
在Android中,`FragmentTransaction.addSharedElement()`方法用于实现Fragment之间的共享元素动画。当你在一个Fragment中切换到另一个Fragment时,可以指定哪些视图应该在整个过渡过程中保持可见并应用相同的动画效果。这通常适用于那些在两个Fragment间需要传递状态并且希望展示连续性的场景。
以下是添加共享元素的基本步骤:
1. **设置共享元素**:首先,在你的FragmentA中,找到那些你想在切换到FragmentB时保持状态和动画的视图,例如:
```java
View sharedView = findViewById(R.id.shared_view);
```
2. **开始交易**:
- 创建一个新的`FragmentTransaction`实例:
```java
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
```
3. **添加共享元素**:
- 使用`addSharedElement()`方法,传入共享的视图、目标Fragment以及一个描述动画路径的`Transition`对象:
```java
transaction.addSharedElement(sharedView, "shared_element_key", transition);
```
`transition`是一个自定义的`Transition`对象,你可以使用`TransitionSet`来组合不同的动画效果。
4. **执行交易**:
- 添加必要的操作(如替换当前Fragment),然后提交事务:
```java
FragmentB fragmentB = new FragmentB();
transaction.replace(R.id.container, fragmentB);
transaction.commitAllowingStateLoss();
```
5. **在目标Fragment中处理共享元素**:
- 在FragmentB的`onCreateView()`或`onStartTransition()`方法中,通过`requireEnterTransition()`或`requireExitTransition()`获取共享的动画,并应用它:
```java
requireTransition().addTarget(sharedView.getId(), sharedView);
```
阅读全文