gpt4 book ai didi

android - 具有嵌套 View 的共享元素过渡

转载 作者:行者123 更新时间:2023-12-02 16:48:39 26 4
gpt4 key购买 nike

我编写了一个简单的示例应用程序来尝试使用嵌套 View 进行共享元素转换( source code on github )。在本例中,它是 CardView 内的 ImageView。我得到以下结果:

image

正如您所看到的,虽然父 View (CardView) 的动画效果很好,但 subview (ImageView) 却没有。看起来它是从 CardView future 位置的左上角开始动画的。

适配器

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View v = mInflater.inflate(R.layout.grid_item, null);

v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(new Intent(mContext, DialogActivity.class));
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation((Activity) mContext,
Pair.create(v, "background_transition"),
Pair.create(v.findViewById(R.id.image), "image_transition"));
mContext.startActivity(i, options.toBundle());
}
});

return v;
}

原始布局

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="1.5dp"
android:transitionName="background_transition"
card_view:cardBackgroundColor="@android:color/holo_red_dark">

<com.tlongdev.sharedelementstest.SquareImageLayout
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transitionName="image_transition"
android:src="@android:drawable/btn_star_big_on"/>

</android.support.v7.widget.CardView>

目标布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
tools:context="com.tlongdev.sharedelementstest.DialogActivity">

<android.support.v7.widget.CardView
android:id="@+id/card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@android:color/holo_red_dark"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="10dp"
android:transitionName="background_transition">

<com.tlongdev.sharedelementstest.SquareImageLayout
android:layout_margin="25dp"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@android:drawable/btn_star_big_on"
android:transitionName="image_transition" />

</android.support.v7.widget.CardView>

</RelativeLayout>

如有任何帮助,我们将不胜感激。

2015 年 11 月 16 日更新: 看起来这个问题已在 Marshmallow 上得到解决,但在 Lollipop 上仍然存在(至少在模拟器上)。

最佳答案

如果 CardView 是唯一的 subview ,请删除相对布局。
让我知道这是否有效。

目标布局

<android.support.v7.widget.CardView 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:transitionName="background_transition"
card_view:cardBackgroundColor="@android:color/holo_red_dark"
card_view:cardCornerRadius="4dp"
card_view:cardElevation="10dp"
tools:context="com.tlongdev.sharedelementstest.DialogActivity">

<com.tlongdev.sharedelementstest.SquareImageLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_gravity="center"
android:layout_margin="25dp"
android:adjustViewBounds="true"
android:scaleType="fitCenter"
android:src="@android:drawable/btn_star_big_on" />
</android.support.v7.widget.CardView>

如果淡入淡出看起来很奇怪,那么使用这个。

适配器

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final View v = mInflater.inflate(R.layout.grid_item, null);

v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(new Intent(mContext, DialogActivity.class));
ActivityOptions options = ActivityOptions
.makeSceneTransitionAnimation((Activity) mContext,
Pair.create(v, "background_transition"));
mContext.startActivity(i, options.toBundle());
}
});

return v;
}

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

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