如何在几个Android应用程序和ICS中创建一个帮助覆盖图?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我想创建像ICS第一次加载时或在ES文件资源管理器或Apex启动器(有更多,但我现在无法想象它们)的应用程序时看到的帮助覆盖图。这只是一个视图相对于另一视图的相对布局吗?我一直无法找到任何示例代码来做这样的事情。任何人都知道这是如何做或有任何想法?

提问于
用户回答回答于

我们假设你通常会打电话setContentView(R.layout.main),但是一开始你想要这个覆盖。

步骤#1:创建一个FrameLayoutJava代码并将其传递给setContentView()

步骤#2:LayoutInflater用于膨胀R.layout.mainFrameLayout

步骤#3:用于LayoutInflater将覆盖图充入到FrameLayout

步骤#4:当用户点击按钮(或其他)以解除覆盖层时,打电话removeView()去除覆盖层FrameLayout

由于叠加层是后面的子层FrameLayout,因此它将浮在顶层内容之上R.layout.main

用户回答回答于

UX教程中的“Coach mark”是“Help overlay”:-)

coach_mark.xml是你的教练标志布局

coach_mark_master_viewcoach_mark.xml中最顶层视图(根)的标识:

public void onCoachMark(){

    final Dialog dialog = new Dialog(this);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialog.setContentView(R.layout.coach_mark);
    dialog.setCanceledOnTouchOutside(true);
    //for dismissing anywhere you touch
    View masterView = dialog.findViewById(R.id.coach_mark_master_view);
    masterView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            dialog.dismiss();
        }
    });
    dialog.show();
}

这里的coach_mark.xml示例,将 - > drawable / coach_marks更改为图像:

coach_mark.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/coach_mark_master_view">
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
         <ImageView
             android:id="@+id/coach_marks_image"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_centerInParent="true"
             android:layout_gravity="center_horizontal"
             android:src="@drawable/coach_marks" />
    </RelativeLayout>
</LinearLayout>

并可以选择使用此主题来删除填充:

<style name="WalkthroughTheme" parent="Theme.AppCompat">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

扫码关注云+社区