Пользовательский интерфейс справки для уведомлений на иконке

Я хочу разработать следующий интерфейс. Кто-нибудь может дать мне пример или предложить некоторый исходный код для реализации?

Значок, который я хочу

5 ответов

Решение

Вот проект на Git Hub, показывающий значки на разных предметах, но внутри вашего приложения (т.е. TextView, TabHost, ImageView так далее)

Что касается отображения значка на значке приложения, это невозможно, поскольку это не способ показа уведомлений для Android. Платформа Android поддерживает обработку уведомлений с помощью уведомлений в строке состояния.

Если вы хотите установить значок уведомления в верхнем левом углу, это так же просто, как следующий фрагмент кода:

Bitmap1 должен быть больше, чем bitmap2, и в вашем случае я бы посоветовал ему изображение PNG с прозрачным фоном, чтобы пузырь уведомлений находился за пределами остальной части изображения.

        private Bitmap overlay(Bitmap bitmap1, Bitmap bitmap2) {
            Bitmap bmOverlay = Bitmap.createBitmap(bitmap1.getWidth(), bitmap1.getHeight(), bitmap1.getConfig());
            Canvas canvas = new Canvas(bmOverlay);
            canvas.drawBitmap(bitmap1, new Matrix(), null);
            canvas.drawBitmap(bitmap2, new Matrix(), null);
            return bmOverlay;
        }

В противном случае, если вы хотите его в правом верхнем углу, вам следует попробовать другие спецификации Canvas.drawBitmap.

Например:

canvas.drawBitmap(Bitmap bitmap, float left, float top, Paint paint);

Попробуйте сделать что-то вроде:

private Bitmap overlay(Bitmap bitmap1, Bitmap bitmap2) {
            Bitmap bmOverlay = Bitmap.createBitmap(bitmap1.getWidth(), bitmap1.getHeight(), bitmap1.getConfig());
            Canvas canvas = new Canvas(bmOverlay);
            canvas.drawBitmap(bitmap1, new Matrix(), null);
            canvas.drawBitmap(bitmap2, bitmap1.getWidth()-bitmap2.getWidth(), 
                              0,null);
            return bmOverlay;
        }

Если все, что вам нужно, это как сделать это в XML, то вы должны создать RelativeLayout, а затем добавить в него оба изображения и выровнять всплывающее уведомление справа. И это должно сработать. Вы бы все равно должны были иметь изображение PNG с прозрачным фоном.

Я надеюсь, что этого будет достаточно для того, что вы хотите сделать.

Вы можете использовать RelativeLayout с двумя детьми, один для значка и один для значка. Значок нуждается в дополнительном заполнении, чтобы значок находился немного за его пределами. Значок располагается на одной линии с parentTop и parentRight.

Вот ваш исходный код для отображения количества значков виджета этого приложения.

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_widget"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dip"
android:focusable="true" >

<ImageView
    android:id="@+id/icon"
    android:layout_width="60dip"
    android:layout_height="60dip"
    android:layout_marginTop="8dp"
    android:background="@drawable/logo"
    android:contentDescription="image"
    android:scaleType="center" />

<TextView
    android:id="@+id/title"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/icon"
    android:gravity="center"
    android:paddingLeft="3dp"
    android:paddingTop="10dp"
    android:shadowColor="#000000"
    android:shadowDx="1"
    android:shadowDy="1"
    android:shadowRadius="1.5"
    android:text="@string/app_name"
    android:textColor="#FFF" />

<TextView
    android:id="@+id/txt_count"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="-10dip"
    android:layout_toRightOf="@+id/icon"
    android:background="@drawable/badge_count2"
    android:contentDescription="badge"
    android:gravity="center"
    android:text="1"
    android:textColor="@color/White"
    android:textStyle="bold" />

</RelativeLayout>

а также вам нужен этот нарисованный файл badge_count2.xml.

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<solid android:color="@color/red" >
</solid>

<stroke
    android:width="2dp"
    android:color="#FFFFFF" >
</stroke>

<padding
    android:bottom="2dp"
    android:left="7dp"
    android:right="7dp"
    android:top="3dp" />

<corners android:radius="10dp" >
</corners>

Вот простая поддержка библиотеки, доступная на нескольких устройствах, таких как Sony, Samsung, MOTO и т. д.... попробуйте это... это будет работать... я пытался и работает нормально... http://github.com/leolin310148/ShortcutBadger

Другие вопросы по тегам