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


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