【发布时间】:2018-03-01 12:23:41
【问题描述】:
我们开始:两个具有共享元素转换(按钮)的活动。第二个Activity 有一个带有提示的TextInputLayout:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="vertical">
<Button android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="GO"
android:transitionName="test"/>
<android.support.design.widget.TextInputLayout android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="WTF?!">
<android.support.design.widget.TextInputEditText android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
</LinearLayout>
第二个Activity的进入转场延迟为澄清问题:TextInputLayout的提示忽略转场动画,转场开始后立即显示。在动画结束时,您可以在提示下方看到正确动画的 EditText 背景(水平线)。这是一个错误还是我错过了什么?这是第二个Activity:
public class SecondActivity extends AppCompatActivity {
public static void launch(Activity activity, View sharedElement) {
Intent intent = new Intent(activity, SecondActivity.class);
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(activity, sharedElement, "test");
activity.startActivity(intent, options.toBundle());
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().setEnterTransition(new Slide().setDuration(5000));
}
}
}
编辑:可以通过在第二个 Activity 的布局中添加背景来“修复”这个错误。
【问题讨论】:
-
你的共享元素是什么?你预计会发生什么?
-
共享元素是按钮,从示例代码中可以看出。期望是,TextInputLayout 的提示作为 Activity 转换的一部分被正确地动画化,就像视图的其余部分一样(查看视频中 EditText 背景的正确转换)。
-
请澄清您的问题。您的动画 GIF 看起来不错,我们已经掌握了。是很酷的动画。但我不明白,有什么问题?它在哪里?如果蓝线向上移动,我会看到什么。就这样。然后在输入字段下会出现一个短暂的闪烁 -- 行。是预期的吗?不期待吗?什么?
-
TextInputLayout 的提示不是动画的,在过渡到第二个 Activity 后立即显示。闪烁的线是在 Activity 过渡结束时出现的 EditText 的背景。蓝线是第二个 Activity 动画时的状态栏。这里没有什么很酷或特别的,只是上面显示的代码。
标签: android android-transitions shared-element-transition