4

Android で SharedElements と Content Transitions を試しています。コンテンツ トランジションと共有要素を組み合わせて特定のアニメーションを作成しようとしましたが、問題が発生しました。共有要素 (ImageView) のトランジションが終了した後、コンテンツ トランジションを使用して、スライド トランジションを使用してテキスト ビューを所定の位置にアニメーション化します。ただし、textViews が下から画像ビューの上部にスライドすると、テキストは ImageView (共有要素) の下に移動し、後で ImageView の上部に表示されます。これを正しく行う方法はありますか?

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

ここで、これを説明するいくつかのスクリーンショットと短いコードを共有しています。

Activity_A.java

package com.example.mehulp.sharedelementsviewheirarchy;

import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;


public class Activity_a extends Activity {
ImageView imageView_a;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity_a);

    imageView_a = (ImageView) findViewById(R.id.imgView_a);
    imageView_a.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            imageClickListener();
        }
    });
}

private void imageClickListener() {
    Intent intent = new Intent(Activity_a.this, Activity_b.class);
    startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(this, imageView_a, imageView_a.getTransitionName()).toBundle());
}
}

activity_a.xml

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">
    <ImageView
        android:id="@+id/imgView_a"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:transitionName="fImage"
        android:padding="30dp"
        android:src="@drawable/female_result"/>
    <LinearLayout
        android:id="@+id/ll_a"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_alignBottom="@id/imgView_a">
        <TextView
            android:id="@+id/myName_a"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="MyName: Lorem Ipsum Ipsum"
            android:padding="10dp"/>
        <TextView
            android:id="@+id/myAge_a"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="My Age: abc years, xyz months, pqr days"
            android:padding="10dp"/>
    </LinearLayout>
</RelativeLayout>

Activity_B.java

package com.example.mehulp.sharedelementsviewheirarchy;

import java.util.List;

public class Activity_b extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_b);

    setEnterSharedElementCallback(new SharedElementCallback() {
        @Override
        public void onSharedElementStart(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {

            TransitionSet transitionSet = new TransitionSet();
            transitionSet.setDuration(3000);

            Slide slideFromBottom = new Slide(Gravity.BOTTOM);
            slideFromBottom.addTarget(R.id.myAge_b);
            slideFromBottom.addTarget(R.id.myName_b);

            transitionSet.addTransition(slideFromBottom);
            getWindow().setEnterTransition(transitionSet);

            super.onSharedElementStart(sharedElementNames, sharedElements, sharedElementSnapshots);
        }

        @Override
        public void onSharedElementEnd(List<String> sharedElementNames, List<View> sharedElements, List<View> sharedElementSnapshots) {
            super.onSharedElementEnd(sharedElementNames, sharedElements, sharedElementSnapshots);
        }
    });
}}

activity_b.xml

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView
    android:id="@+id/imgView_b"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:transitionName="fImage"
    android:padding="30dp"
    android:scaleType="fitXY"
    android:src="@drawable/female_result"/>
<LinearLayout
    android:id="@+id/ll_b"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/myName_b"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="MyName: Lorem Ipsum Ipsum"
        android:padding="10dp"/>
    <TextView
        android:id="@+id/myAge_b"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="My Age: abc years, xyz months, pqr days"
        android:padding="10dp"/>
</LinearLayout>

4

2 に答える 2