3

アプリケーションをもう少しユーザーフレンドリーにしたいので、ユーザーがアプリケーションを初めて起動したときにさまざまなコンポーネントを強調表示する一種のオーバーレイを表示することを考えていました。

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

次に例を示します。

ここに画像の説明を入力

4

2 に答える 2

5

かぶせる

これはかなり古いことは知っていますが、これを見つけて少し修正しました。私にとってはうまくいきます。

「overlay.png」ファイルを作成して「drawable」にコピーします

layout/overlay_activity.xml を作成する

<?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/Overlay_activity"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background= "@null"
        android:orientation="vertical" >

    <ImageView
        android:id="@+id/ivOverlayEntertask"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:src="@drawable/overlay" />

</LinearLayout>

xml/overlay_prefs.xml を作成します。

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="true"
        android:key="overlaypref"
        android:summary="Enable Overlay Screen"
        android:title="Overlay Screen" />

</PreferenceScreen>

アクティビティで、SharedPreferences のインスタンスとブール値を作成して値を保存します。

SharedPreferences setOverlay;
boolean showOverlay;

次に、OnCreate でオーバーレイ CheckBoxPreference の値を取得し、それが true の場合は、画像をアクティビティにオーバーレイします。

setOverlay = PreferenceManager.getDefaultSharedPreferences(this);
showOverlay = setOverlay.getBoolean("overlaypref", true);
    if (showOverlay == true) {
    showActivityOverlay();
    }

アクティビティに新しいメソッドを作成します: showActivityOverlay() このメソッドが行うことは、アクティビティの開始時にオーバーレイを表示し、ユーザーが画面をタップすると、「overlaypref」を「false」に設定し、かぶせる。

  private void showActivityOverlay() {
      final Dialog dialog = new Dialog(this,
      android.R.style.Theme_Translucent_NoTitleBar);

      dialog.setContentView(R.layout.overlay_activity);

      LinearLayout layout = (LinearLayout) dialog
      .findViewById(R.id.overlay_activity);
      layout.setBackgroundColor(Color.TRANSPARENT);
        layout.setOnClickListener(new OnClickListener() {

          @Override
          public void onClick(View arg0) {
              dialog.dismiss();
              SharedPreferences.Editor editor = setOverlay.edit();
              editor.putBoolean("overlaypref", false);
              editor.commit();
          }
      });
      dialog.show();
  } 
于 2013-10-07T19:17:57.617 に答える
1

フレームまたは相対レイアウトを使用します。

<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent">
  <include layout="@layout/normalLayout" />
  <include layout="@layout/overlayLayout" />
</RelativeLayout>

onCreate で、オーバーレイが必要かどうかを確認し、必要な場合は ContentView をオーバーレイ バージョンに設定します。クリックすると、オーバーレイを非表示にするか、ContentView を通常のレイアウトに設定できます。

于 2012-10-10T14:20:08.397 に答える