Androidの新しいアクティビティ「サイドから入る」
-
24-10-2019 - |
質問
新しいアクティビティに行く最良の方法は何ですかが、アクティビティが左にスライドし、新しいアクティビティが画面に入るように見えるようにしますか?私は新しいアクティビティを呼び出すために意図を使用しています、それはアプリケーションを軽量にしたい場合にそれを行う方法ですか?
もう少し詳しく説明するために、Androidの電話で右にメニーでビューをスワイプし、左から友人のストリームに入り、画面上で行われます。 ButtonClicksを使用してアプリでやりたいのですが、それは私が求めている「スライド」です。ありがとう!
解決
Android OS 2.1以降では、 OverridePendingTransition() あなたが探しているアクティビティアニメーション間の一種の移行を提供する方法。
まず、いくつかのアニメーションリソースを定義します /res/anim/. 。これが名前が付けられているものです right_slide_out.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="0"
android:toXDelta="100%p"
android:duration="500"
/>
</set>
別の呼びかけ right_slide_in.xml :
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<translate
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="700"
/>
</set>
次に、新しいアクティビティを開始したら、次のようにOverridePendingTransitionメソッドを使用します。
startActivity(intent);
overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out);
これにより、アクティビティを開始するためのトランジションアニメーションが処理されるはずです。
逆に、そのアクティビティが終了し、あなたが元のアクティビティに戻ってくると、もう少し霧がかかります。
そのアクティビティを終了し、Activity.finish()を呼び出すUIコントロールがある場合、その後、OverridePendingTransition()を追加できます。
バックボタンを押してユーザーがアクティビティを終了する場合を処理するには、次のようなものを使用します。
@Override
public void onBackPressed()
{
this.finish();
overridePendingTransition (R.anim.right_slide_in, R.anim.right_slide_out);
}
他のヒント
rept_slide_out.xmlを使用して(Joshの右_slide_out.xmlのtoxdeltaを変更して-100%pを読むことができます)、古いアクティビティを左に消えます(両方のアニメーションで同じ期間もあります)。
はい、意図を使用することは、別のアクティビティを開始する標準的な方法であり、通常、あなたが言及したスライドのことを行います。 Eg StartActivity(new Intent(this、mynextactivity.class));それをします。
Jemsは正しいです。デフォルトでは、新しい意図を起動するときにスライドアニメーションが取得されます。
あなたがもっとカスタムアニメーションを探しているなら、あなたは使用できます オーバーライデンディングトランション. 。 APIレベル5に追加されたことに留意してください。これを参照してください APIデモ サンプルの使用について。
Enter and Exitアニメーションが何であるかについては、少し混乱しています。まだそれを熟考している人のために、ここにテンプレートがあります。
overridePendingTransition(
enterAnimationForCalledActivity,
exitAnimationForCallingActivity
);
これはおそらく空気を少しクリアするはずです。