用简单的方式写一个转场动画
时间: 2023-05-24 10:03:23 浏览: 60
A:假设我们现在有两个页面,页面 A 和页面 B。我们希望当从页面 A 跳转到页面 B 时,有一个简单的转场动画。
首先,我们需要在页面 A 中设置一个跳转按钮,并为按钮添加跳转事件。在跳转事件中,我们将使用 UIView 的 transition 方法来实现转场动画:
```swift
let destinationVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "B")
UIView.transition(with: self.view, duration: 0.5, options: .transitionCrossDissolve, animations: {
self.navigationController?.pushViewController(destinationVC, animated: false)
}, completion: nil)
```
在这段代码中,我们首先通过 UIStoryboard 类从故事版中获取页面 B 的视图控制器。然后,我们使用 UIView 的 transition 方法,设置动画的时间为 0.5 秒,选择转场动画的类型为 transitionCrossDissolve(交叉溶解效果),并将转场动画的执行代码写在 animations 中。
我们的动画效果就这样实现了,当我们点击按钮跳转页面时,页面 A 会以交叉溶解的效果渐隐,并跳转到页面 B。
相关问题
安卓用xml写一个转场动画
好的,以下是一个安卓使用 XML 写转场动画的示例:
首先,在 res 目录下创建一个新的 XML 文件,例如 transition.xml,然后在其中添加一个 transition 元素,指定转场动画的类型和时长,例如:
```xml
<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:transitionOrdering="together">
<changeBounds />
<changeTransform />
<changeClipBounds />
<changeImageTransform />
</transitionSet>
```
在这个示例中,我们使用了一个 transitionSet 元素,它包含了四个子元素,分别是 changeBounds、changeTransform、changeClipBounds 和 changeImageTransform,它们分别表示不同方面的动画效果。
changeBounds 表示在 View 位置和大小发生变化时播放动画,changeTransform 表示在 View 的旋转和缩放发生变化时播放动画,changeClipBounds 表示在 View 的裁剪区域发生变化时播放动画,changeImageTransform 表示在 ImageView 的图像变化时播放动画。
接下来,在你的 Java 代码中,使用 ActivityOptionsCompat 对象指定转场动画的类型和时长,例如:
```java
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
this
).setDuration(500);
```
最后,在启动转场动画目标 Activity 时,调用 startActivity() 方法,并传入上面创建的 options 对象,例如:
```java
Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent, options.toBundle());
```
当目标 Activity 启动时,转场动画就会自动播放。
希望这个示例能够帮助你使用 XML 实现自己的转场动画。
安卓原生代码写一个转场动画
好的,以下是一个简单的安卓原生代码实现转场动画的示例:
首先,在你的 XML 布局文件中添加两个 View,分别是起点和终点,例如:
```xml
<RelativeLayout
android:id="@+id/transition_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/start_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/start_image"/>
<ImageView
android:id="@+id/end_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/end_image"/>
</RelativeLayout>
```
接下来,在你的 Java 代码中定义转场动画的起点和终点 View,例如:
```java
RelativeLayout transitionLayout = findViewById(R.id.transition_layout);
ImageView startView = findViewById(R.id.start_view);
ImageView endView = findViewById(R.id.end_view);
```
然后,创建一个 ActivityOptionsCompat 对象,指定起点和终点 View,以及转场动画的类型和时长,例如:
```java
ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
this,
Pair.create((View) startView, "start_view"),
Pair.create((View) endView, "end_view")
).setDuration(500);
```
其中,Pair.create() 方法用于将 View 和其对应的名称打包成一个 Pair 对象。这里的名称可以是任意字符串,但必须与转场动画目标 Activity 中对应的 View 的名称相同。
最后,在启动转场动画目标 Activity 时,调用 startActivity() 方法,并传入上面创建的 options 对象,例如:
```java
Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent, options.toBundle());
```
当目标 Activity 启动时,转场动画就会自动播放。
希望这个示例能够帮助你实现自己的转场动画。