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>

在您的 Activity 中,创建 SharedPreferences 的实例和一个用于存储值的布尔值:

SharedPreferences setOverlay;
boolean showOverlay;

然后在 OnCreate 中获取叠加 CheckBoxPreference 的值,如果为真,则将图像叠加到 Activity 上:

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

在 Activity 中创建一个新方法:showActivityOverlay() 这个方法的作用是,它在 Activity 启动时显示 Overlay,然后当用户点击屏幕时,它将“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 设置为覆盖版本。当他们单击时,您可以隐藏叠加层或 setContentView 到常规布局。

于 2012-10-10T14:20:08.397 回答