为什么我的 activity 转换不起作用?
Why is my activity transition not working?
我想将 EditText
从 1 activity 动画化到另一个。这是我在第一个 activity:
上的编辑文本
<EditText
android:id="@+id/urlEditText"
android:layout_width="0dp"
android:layout_height="40dp"
app:layout_constraintTop_toBottomOf="@id/topLayout"
android:background="@drawable/gray_rounded"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginHorizontal="25dp"
android:hint="Search or type a type a url"
android:paddingEnd="20dp"
android:drawableStart="@drawable/search"
android:drawablePadding="10dp"
android:paddingStart="10dp"
android:layout_marginTop="25dp"
android:transitionName="shift"/>
这是我的第二个 activity:
<EditText
android:id="@+id/urlEditText"
android:layout_width="0dp"
android:layout_height="40dp"
android:background="@drawable/gray_rounded"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginHorizontal="25dp"
android:hint="Search or type a type a url"
android:paddingEnd="20dp"
android:drawableStart="@drawable/search"
android:drawablePadding="10dp"
android:paddingStart="10dp"
android:layout_marginTop="25dp"
android:transitionName="shift"/>
但是,在第一个中,它位于底部,在第二个 activity 中,它位于顶部。这是我尝试启动动画的方式:
Intent intent = new Intent(MainActivity.this,FullSearchActivity.class);
ActivityOptionsCompat activityOptions= ActivityOptionsCompat.
makeSceneTransitionAnimation(this,binding.urlEditText,"shift");
ActivityCompat.startActivity(this,intent,activityOptions.toBundle());
但是这并没有打开第二个activity。为了验证它是否打开,我尝试在第二个 activity 中显示吐司。 toast 已显示,但第二个 activity 未显示。为什么会这样?
编辑
这是我的完整 ResultActivity 代码:
public class ResultActivity extends AppCompatActivity {
ActivityResultBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityResultBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
}
PS: FullSearchActivity
已被我重命名为 ResultActivity
这是 Kotlin 中的工作代码。您可以将其转换为 Java.
val animationIntent = Intent("FIRST ACTIVITY", SECOND ACTIVITY::class.java)
mViewBinding.apply {
val options = ViewCompat.getTransitionName("EDIT TEXT ID HERE OF FIRST ACTIVITY")?.let {
ActivityOptionsCompat.makeSceneTransitionAnimation(
this@FIRST ACTIVITY,
"EDIT TEXT ID HERE OF FIRST ACTIVITY",
it
)
}
startActivity(animationIntent, options?.toBundle())
}
首先,当您定义从 material 主题继承的样式时,使用 android:windowActivityTransitions
属性启用 window 内容转换。您还可以在样式定义中指定进入、退出和共享元素转换:
<style name="BaseAppTheme" parent="android:Theme.Material">
<!-- enable window content transitions -->
<item name="android:windowActivityTransitions">true</item>
<!-- specify enter and exit transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
更多:https://developer.android.com/training/transitions/start-activity
我想将 EditText
从 1 activity 动画化到另一个。这是我在第一个 activity:
<EditText
android:id="@+id/urlEditText"
android:layout_width="0dp"
android:layout_height="40dp"
app:layout_constraintTop_toBottomOf="@id/topLayout"
android:background="@drawable/gray_rounded"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginHorizontal="25dp"
android:hint="Search or type a type a url"
android:paddingEnd="20dp"
android:drawableStart="@drawable/search"
android:drawablePadding="10dp"
android:paddingStart="10dp"
android:layout_marginTop="25dp"
android:transitionName="shift"/>
这是我的第二个 activity:
<EditText
android:id="@+id/urlEditText"
android:layout_width="0dp"
android:layout_height="40dp"
android:background="@drawable/gray_rounded"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_marginHorizontal="25dp"
android:hint="Search or type a type a url"
android:paddingEnd="20dp"
android:drawableStart="@drawable/search"
android:drawablePadding="10dp"
android:paddingStart="10dp"
android:layout_marginTop="25dp"
android:transitionName="shift"/>
但是,在第一个中,它位于底部,在第二个 activity 中,它位于顶部。这是我尝试启动动画的方式:
Intent intent = new Intent(MainActivity.this,FullSearchActivity.class);
ActivityOptionsCompat activityOptions= ActivityOptionsCompat.
makeSceneTransitionAnimation(this,binding.urlEditText,"shift");
ActivityCompat.startActivity(this,intent,activityOptions.toBundle());
但是这并没有打开第二个activity。为了验证它是否打开,我尝试在第二个 activity 中显示吐司。 toast 已显示,但第二个 activity 未显示。为什么会这样?
编辑
这是我的完整 ResultActivity 代码:
public class ResultActivity extends AppCompatActivity {
ActivityResultBinding binding;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
binding = ActivityResultBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
}
}
PS: FullSearchActivity
已被我重命名为 ResultActivity
这是 Kotlin 中的工作代码。您可以将其转换为 Java.
val animationIntent = Intent("FIRST ACTIVITY", SECOND ACTIVITY::class.java)
mViewBinding.apply {
val options = ViewCompat.getTransitionName("EDIT TEXT ID HERE OF FIRST ACTIVITY")?.let {
ActivityOptionsCompat.makeSceneTransitionAnimation(
this@FIRST ACTIVITY,
"EDIT TEXT ID HERE OF FIRST ACTIVITY",
it
)
}
startActivity(animationIntent, options?.toBundle())
}
首先,当您定义从 material 主题继承的样式时,使用 android:windowActivityTransitions
属性启用 window 内容转换。您还可以在样式定义中指定进入、退出和共享元素转换:
<style name="BaseAppTheme" parent="android:Theme.Material">
<!-- enable window content transitions -->
<item name="android:windowActivityTransitions">true</item>
<!-- specify enter and exit transitions -->
<item name="android:windowEnterTransition">@transition/explode</item>
<item name="android:windowExitTransition">@transition/explode</item>
<!-- specify shared element transitions -->
<item name="android:windowSharedElementEnterTransition">
@transition/change_image_transform</item>
<item name="android:windowSharedElementExitTransition">
@transition/change_image_transform</item>
</style>
更多:https://developer.android.com/training/transitions/start-activity