リストから詳細ページへ、そして詳細ページからリストページへと戻った後、素敵なトランジション効果を作ろうとしています。何かのようなもの:
+---------+ +--------+ A | 全部同じ方向から +-----+ B | | | | | あ | +--> | | | | | | | | | | | | | | | | | | | +--> | | | +--------+ | | | +--------+ | +---------+ +--------+ +----------+ | | B |---+ +----| あ | | | | | あ | | | ビ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +---> | | | | | | | | | | | | | | | <----+ | | | | | | | | | | | | | | | |---+ +----| | | +--------+ | | | +---------+ B が A の上に移動し、押し戻した後 A が B の上に移動します。
最初の部分 (リスト>詳細) はうまく機能しますが、逆の順序のエフェクトをバック アクションにフックすると、うまく機能しますが、私が望むようには機能しません。間違ったページ(ページ B)は、バックプレス後にスライドを引き受け、A に落ち着き、その後消えます。
私が本当に望んでいたのは、バックプレスの後に A が B の上をスライドすることでした。これはより理にかなっています。
リストからのコード:
lstBooks.setOnItemClickListener(new ListView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> adapter, View view, int position, long id)
{
Intent intent = new Intent(BooksActivity.this, DetailClass.class);
startActivity(intent);
overridePendingTransition(R.anim.left_to_right_slide, R.anim.right_to_left_slide);
}
});
詳細ページの反対:
@Override
public void onBackPressed()
{
super.onBackPressed();
overridePendingTransition(R.anim.left_to_right_slide, R.anim.right_to_left_slide);
}
左から右へのスライド:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
<translate android:fromXDelta="-100%"
android:toXDelta="0%"
android:fromYDelta="0%"
android:toYDelta="0%"
android:duration="350"/>
</set>
右から左へのスライド:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false">
<translate android:fromXDelta="0%"
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="0%"
android:duration="350" />
</set>
基本的には、押し返すと自然にスライドが反対方向に動くようにしたいです。**