私は2つのアクティビティ(AとB)を持っています。ボタンをクリックすると、Aからの要素がBにアニメーション化された遷移を開始します。しかし、B共有要素の遷移をキャンセルする
この質問をする前に、私はインターネットを研究し、setSharedElementReturnTransition(transition)
とsetSharedElementReenterTransition(transition)
という2つの方法があることを発見しました。これらのメソッドは適切なアクティビティonCreate()
で呼び出され、transition = null
のメソッドが動作しませんでした。
super.onBackPressed()
の代わりにをonBackPressed()
に呼び出しました。望ましい行動を達成するための他の方法はありますか?
要約すると、逆方向遷移をnullに設定すると、何も変更されませんでした。遷移はオーバーライドされません。
編集1.ここではコードです:XMLファイル(activity_Aとactivity_B)で
ActivtyA.java
public class ActivityA {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_A);
}
...
@Override
public void onPersonalProfileEditIconClicked() {
Intent intent = new Intent(ActivityA.this, ActivityB.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
View sharedView = avatarView;
String sharedElementName = getString(R.string.profile_avatar);
ActivityOptions transitionActivityOptions = ActivityOptions.makeSceneTransitionAnimation
(ActivityA.this, sharedView, sharedElementName);
startActivity(intent, transitionActivityOptions.toBundle());
} else startActivity(intent);
}
}
ActivityB.java
public class ActivityB {
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_B);
}
...
@Override
public void onBackPressed() {
finish();
}
}
ていsharedViewプロパティtransitionName
あなたはコードの下に使用して所望の出力を得ることができますthemes.xml
<resources>
<style name="theme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:windowActionModeOverlay">true</item>
<item name="android:windowContentTransitions">true</item>
</style>
</resources>
私も同じ問題に直面し、私のために、私がやったこと(onBackPressed 'に')( '仕上げだった)' – AJay
あなたのコードを共有してください –
@AJayは、応答していただきありがとうございます。私はすでにそれをしましたが、解決策ではありません。 –