0

私のアプリケーションでは、現在進行中のアクティビティとは関係のない場所 (私が選択しましたが、画面上のどこにでも配置できます) でのショーとなるフローティング ビューを作成したいと考えています。以下のアクティビティは引き続きタッチ可能 (フォーカスあり) であり、このビューは明示的にタッチされるたびにのみタッチされます。

さらに、ユーザーがアプリケーション内にいる限り、ユーザーがアクティビティから別のアクティビティに移動しても、フローティング ビューは保持されます。

下の画像を参照してください。

これの私の目的は、特定のことが起こったときに、このフローティング ビューを数秒間表示して、ユーザーがそれを押すか、X を押して閉じることができるようにすることです (つまり、カスタム レイアウトになります)。 .

これを達成するための最良の方法は何ですか?

4.0.x* 以降をターゲットにします。

  • x > 1

ここに画像の説明を入力

4

2 に答える 2

0

フローティング ビューをルート コンテンツ ビューに追加し、完了したら削除できると思います。を呼び出すことで、アクティビティ内のルート コンテンツ ビューを取得できます。

ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);

したがって、次のようになります。

protected void showPopup(View view) {
    view.setId(POPUP_VIEW_ID);
    ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);
    rootGroup.addView(view);
}

protected void removePopup() {
    ViewGroup rootGroup = (ViewGroup) findViewById(android.R.id.content);
    int i = 0;
    while(i < rootGroup.getChildCount()) {
        if(rootGroup.getChildAt(i).getId() == POPUP_VIEW_ID) {
            rootGroup.removeViewAt(i);
        } else {
            i++;
        }
    }
}

これらのメソッドは、BaseActivity クラスで適切に機能する場合があります。

于 2013-12-03T08:20:35.313 に答える
0

これを行う最善の方法は、アクティビティの代わりにフラグメントを使用することだと思います。フローティング ビューは、の ContentView に設定されますFragmentActivity。このようにして、フラグメント コンテナーの上に設定できます (xml でコンテナーの後にフローティング ビューを宣言します)。次に、fragmentTransactionアニメーションを使用して、アクティビティのようにフラグメントを切り替えます。

明確でない場合、またはフラグメントではなくアクティビティのみを使用できる場合はお知らせください。

于 2013-11-07T15:17:48.983 に答える