0

アクティビティの上と、そのアクティビティの上にある可能性のあるダイアログの上にスライドして表示されるポップアップを実装したいと考えています。また、ポップアップが画面に表示されている間も、バックグラウンドのアクティビティとダイアログはインタラクティブでなければなりません (つまり、それらはタッチに反応し、すべてのボタンなどは引き続き機能する必要があります)。x 時間が経過すると、ポップアップが画面の外にスライドします。

私は次のアイデアを思いつきましたが、それらにはすべて何らかの欠点があります。

1.カスタム トースト トーストは常にアクティビティとダイアログの上に表示されますが、スライド インとスライド アウトを行うことはできないと思います。

2. カスタム ダイアログ ダイアログはアクティビティとダイアログの上にも表示されますが、ここでの問題は、カスタム ダイアログが画面に表示されている間、アクティビティと以前に開いていたすべてのダイアログが対話的でなくなることです (つまり、それらはタッチを取得しません)。 )。

3. アクティビティの ImageView このアプローチの問題は明らかです。常にダイアログの背後に表示されます。

どんな助けでも大歓迎です。ありがとう !

4

2 に答える 2

1

オプションは次のとおりです。

1) Toast を使用して、アニメーションのイン/アウトを犠牲にします

2)ダイアログを使用して、タッチイベントを犠牲にします

3) これは実行可能ではありません

カスタム ビューでこれを行う方法を考えることさえできません。複雑すぎて、Google UX デザインで推奨されているものではありません。

おそらく、あなたの問題に対する別の解決策のインスピレーションについては、http: //developer.android.com/design/index.htmlを試してみてください。

本当の質問は、なぜこのツールチップが必要なのかということです。何を達成しようとしていますか?これらの回答を使用して、より *Android-esq なソリューションを探すことができます

于 2012-05-24T14:46:48.463 に答える
0

ダイアログではなく、ビューのサブクラスが本当に必要です。ビューを追加するには addView() を使用し、ビューを削除するには removeView() を使用します。

レイアウト/スタイリングを介して、ダイアログのように見せることができます。

ビュー アニメーションを使用して、スライド イン/アウト効果を実現できます。

Animation slideIn = new TranslateAnimation (windowWidth, 0, 0, 0);
slideIn.setDuration (400);
slideIn.setInterpolator(new LinearInterpolator());
dialogView.startAnimation(slideIn);

Animation slideOut = new TranslateAnimation (0, windowWidth, 0, 0);
slideOut.setDuration (400);
slideOut.setInterpolator(new LinearInterpolator());
dialogView.startAnimation(slideOut);

AnimationListener() onAnimationEnd() を使用して、スライドアウト後にビューを削除します。

TranslateAnimation の x/y パラメータを微調整して、必要な効果を実現する必要があります。ダイアログを x 軸と y 軸の中心に配置する必要があると仮定します...

于 2012-05-24T16:41:58.770 に答える