gpt4 book ai didi

android - 共享元素过渡

转载 作者:行者123 更新时间:2023-11-29 00:04:35 25 4
gpt4 key购买 nike

我在 RecyclerView 中有一个图标,左边是一些文本。当你点击它时,一个新的 Activity 开始与那个项目相对应,在标题栏的中心有相同的图标和它正下方的文本。我想在这里实现共享元素转换,以便图标的两个位置之间可以平滑移动,看起来标题栏从该图标展开。知道我该怎么做吗?像这样:https://developer.android.com/design/material/videos/ContactsAnim.mp4

最佳答案

这是我 friend 的示例代码

ListView或RecyclerView的单项

item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">

<ImageView
android:id="@+id/imageView"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_centerHorizontal="true"
android:src="@drawable/img"
android:transitionName="@string/transition_name"/>

<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/imageView"
android:text="txt"
android:textSize="18sp"/>

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/textView"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:text="BUTTON TEXT"/>

</RelativeLayout>

detail_activity.xml

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="16dp">

<ImageView
android:id="@+id/imageView"
android:layout_width="250dp"
android:layout_height="250dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:src="@drawable/img"
android:transitionName="@string/transition_name"/>

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:hint="Some Hint"/>

<ImageView
android:id="@+id/smallerImageView"
android:src="@drawable/img2"/>

</RelativeLayout>

在Activity代码中设置的ListView中的onItemClickListner如下

imgContainerView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
ActivityOptionsCompat options = ActivityOptionsCompat.
makeSceneTransitionAnimation(this, imageView, getString(R.string.activity_image_trans));
startActivity(intent, options.toBundle());
}
else {
startActivity(intent);
}
}
});

SharedElement 转换的关键点是要设置动画的元素的 xml 属性。

android:transitionName="@string/activity_image_trans"

两个布局的过渡名称应该相同。

****注:** **Shared Element Transition 仅支持 Lolipop 及更高版本的 Android。

关于android - 共享元素过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34853298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com