Как создать наложение справки, как вы видите в нескольких приложениях для Android и ICS?



Я хочу создать справочные оверлеи, такие как те, которые вы видите, когда ICS загружается в первый раз или в приложениях, таких как ES File Explorer или Apex Launcher (есть больше, но я не могу думать о них прямо сейчас). Это просто родственник макет с одним видом на другой? Я не смог найти ни одного примера кода для выполнения такой вещи. Кто-нибудь знает как это делается или есть какие-то идеи?



ES File ExplorerES File Explorer

307   4  

4 ответов:

предположим, что вы обычно звоните setContentView(R.layout.main), но при первом запуске, вы хотите, чтобы этот оверлей.

Шаг #1: Создание FrameLayout в Java-коде и передайте это setContentView().

Шаг № 2: Используйте LayoutInflater раздуть R.layout.main на FrameLayout.

Шаг № 3: Используйте LayoutInflater чтобы надуть накладку в FrameLayout.

Шаг #4: Когда пользователь нажимает кнопку (или что-то еще), чтобы закрыть наложение, вызовите removeView() удалить оверлей с FrameLayout.

так как наложение является более поздним дочерним элементом FrameLayout, он будет плавать поверх содержимое R.layout.main.

"Coach mark" - это "Help overlay" в UX talk : -)

coach_mark.xml ваш тренер Марк макет

coach_mark_master_view - это идентификатор самого верхнего вида (root) в coach_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 (к этому превосходному решению, данному Oded Breiner), поэтому его легко скопировать и вставить в ppl, чтобы быстро увидеть рабочий пример.

образец 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>

вы можете сделать это довольно быстро. Вы добавляете, например, LinearLayout, где вы помещаете изображение с Альфой, которые соответствуют вашей справочной информации и что вы хотите нарисовать, как наложение. В xml вашей деятельности вы помещаете этот макет в RelativeLayout после макета вашей деятельности с пропавшей видимостью. Когда вы хотите нарисовать справочную информацию, вам просто нужно установить эту видимость в visible.

Я надеюсь, я ясно, если у вас есть какие-либо вопросы, я буду пожалуйста отвечать им.

см. мой другой ответ, как программно показать макет наложения поверх текущей деятельности. Внешний вид.xml не нужно ничего знать о наложении кожи. Вы можете наложить полупрозрачный слой, покрыть только часть экрана, один или несколько textview и кнопок на нем... Как наложить кнопку программно?

  • создать res / layout / paused.xml RelativeLayout шаблон или использовать любой макет верхнего уровня
  • создать функции показать наложение кожи
  • ключ для того чтобы получить ручку к плану.xml, используйте класс LayoutInflater для анализа xml для просмотра объекта, добавьте представление наложения в текущую структуру макета
  • в моем примере используется таймер для уничтожения объекта наложения, полностью удаляя его из структуры представления. Это вероятно, что вы хотите также избавиться от него без следа.

моя цель заключалась в том, что основные виды деятельности не знают о наложении кожи, накладки приходят и уходят, много разных оверлеи, все еще способные использовать overlay1.текстовые файлы xml в качестве шаблона и содержимое должны быть обновлены программным способом. Я делаю в значительной степени то, что CommonsWare сказал нам, что мой пост показывает фактический программный код для начала работы.

отказ от ответственности: OPs " Спасибо за Ваш вклад. Вот как я себе это представлял. Я должен отдать должное ответу ниже " комментарий не означает мой ответ, но CommonsWare ответ. Stackoverflow изменили почтовые заказы.

Comments

    Ничего не найдено.