我想让我的应用程序对用户更友好一点,所以我想展示一种叠加层,当用户第一次启动应用程序时,它会突出显示不同的组件。
开始实施此功能的最佳方法是什么?
这是一个例子:
我知道这是相当古老的,但我发现了这一点并做了一些细微的修改。对我很有用。
创建并将您的“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();
}
使用框架或相对布局。
<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent">
<include layout="@layout/normalLayout" />
<include layout="@layout/overlayLayout" />
</RelativeLayout>
在您的 onCreate 中,检查您是否需要覆盖,如果需要,请将 ContentView 设置为覆盖版本。当他们单击时,您可以隐藏叠加层或 setContentView 到常规布局。