Intereting Posts
Изменение изображения ресурса панели выполнения Как получить файл журнала с устройства Android? Приостановить приложение Android с помощью Phonegap Android Mobile Backend Starter сбой 404 не найден … несколько раз Должен ли я выполнять Thread.currentThread (). Interrupt () `перед` throw new InterruptedIOException () `? Android, как включить / отключить автоматическую синхронизацию программно Как включить зависимость библиотечного модуля в проекте Android Studio? Умение по электронной почте Android и тело сообщения Android MultiSelectListPreference, java.lang.String не может быть добавлен в java.util.Set Тег <uses-permission> появляется после тега <application> Как читать штрих-коды с камерой на Android? Использование API Google Адресов в Android Как я могу оживить изменение цвета панели состояния и панели инструментов (как это делает новое приложение «Календарь») Android / gradle: включить имя версии из аромата в имени файла apk Изменение макета при изменении ориентации во время выполнения фрагмента без воссоздания представления

Плавный градиент на разных устройствах

В моем приложении у меня есть градиент как drawable, который я использую в качестве фона, и я не хочу, чтобы он выглядел как можно более гладким. После того, как я попытался разобраться с собой, я придумал следующее. Если вы вызываете только setDither (true), ваш градиент все еще используется, поэтому вам нужно установить PixelFormat, как этот Window.setFormat (PixelFormat.RGBA_8888). Но с другой стороны G1 не поддерживает RGBA_8888, поэтому вызов его делает градиент еще более уродливым, чем раньше, поэтому Window.setFormat (PixelFormat.RGBA_8888) не будет работать на устройствах, которые его не поддерживают.

Каков правильный способ сгладить мой градиент на всех устройствах, на которых будет работать мое приложение.

PS: я нашел некоторые связанные темы

Как нарисовать гладкий градиент на холсте в Android

Можно ли сгладить градиент?

Solutions Collecting From Web of "Плавный градиент на разных устройствах"

Откройте изображение в Photoshop (или Gimp или Paint.NET или что-то еще) и добавьте небольшое количество шума. Тогда вам не нужно ничего делать в коде.

Вы можете использовать пользовательскую форму (поместите ее в /drawable/gradient.xml или что-то в этом роде):

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#000000" android:endColor="#ffffff" android:angle="90"/> </shape> 

Таким образом, он будет окрашен os, и он должен быть совершенно гладким.

При загрузке изображения установите для параметра pixelFormat значение RGB_565 и setDither значение true, если вы рисуете его прямо на экране без каких-либо изменений.

Обычно дисплеи не являются 24 битами, что обычно должно делать это достаточно хорошо, по крайней мере, довольно последовательно.

Вам не нужно использовать 8888, если вам не нужна альфа и не будет изменять данные изображения. Он будет отображаться на 99% мобильных дисплеев как 16-битный цвет, а не 24 бит, так как это то, что поддерживают панели.

У N1 всегда будут проблемы, потому что матрица, которую они используют для панели, имеет двойное зеленое разрешение.

Если настройка сглаживания и RGBA_888 не помогает на некоторых телефонах, решение может состоять в том, чтобы установить layerType на software , чтобы отключить аппаратное ускорение

 android:layerType="software" 

Это устранило мою проблему на телефоне Samsung S5.