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