Пользовательский интерфейс справки для уведомлений на иконку - PullRequest
5 голосов
/ 12 декабря 2011

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

Icon I want

Ответы [ 5 ]

9 голосов
/ 12 декабря 2011

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

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

6 голосов
/ 12 декабря 2011

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

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 с прозрачным фоном.

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

2 голосов
/ 07 декабря 2013

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

    <?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>

2 голосов
/ 12 декабря 2011

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

0 голосов
/ 08 февраля 2016

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

...