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

Я использую следующие возможности:

<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > <gradient android:startColor="@color/content_background_gradient_start" android:endColor="@color/content_background_gradient_end" android:angle="270" /> </shape> 

Проблема в том, что я получаю суровые обвязки на устройствах hdpi (например, Nexus One и Droid), так как градиент идет от верхней части экрана до самого низа.

Согласно http://idunnolol.com/android/drawables.html#shape_gradient, для градиента нет атрибута «сглаживание». Можно ли что-то сделать, чтобы сгладить градиент?

Примечание: добавление dither = "true" в форму не похоже на работу.

Solutions Collecting From Web of "Можно ли сгладить градиент?"

Я написал документацию, на которую вы ссылались. Я еще раз посмотрел на код, и, к сожалению, нет способа включить сглаживание в GradientDrawable, за исключением явного вызова GradientDrawable.setDither() в коде.

(Как выглядят коды, технически вы можете включить Gradient в качестве единственного дочернего элемента <selector> и разрешить сглаживание всего селектора, однако это определенно взломать.)

Я не убежден, что разрешающая сглаживание фактически решит вашу проблему, поскольку сглаживание (по крайней мере, как это отмечено в официальных документах Android) предназначено для решения проблем с группировкой, когда устройство имеет слишком мало цветовой палитры. Это, по-видимому, проблема с диапазоном из-за размера градиента.

Привет всем, у меня такая же проблема, есть одно решение, которое работает, но это не очень хорошо.

 getWindow().setFormat(PixelFormat.RGBA_8888); getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER); 

Это работает для меня, но проблема в том, что все окна затухают. Я искал способ сгладить только градиент, но я ничего не мог найти. Android: dither = "true" в xml не работает, а GradientDrawable.setDither (true) также не работает. Итак, любые идеи, как я могу сглазить только градиент?

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

Тем не менее, некоторое время назад я обнаружил, что после того, как я попробовал <gradient> и все виды Drawable s с различными атрибутами dither и вручную создавал смятые PNG, – если я вручную создаю новое изображение с использованием GIMP и задаю плотность в этой точке (т.е. явно Ввод 120, или 240 и т. Д.) При создании изображения, он отлично смотрится даже на устройствах hdpi . И это несмотря на то, что это градиент оттенков серого, с не так много цветов.

PNG при сохранении заканчивается сравнительно большим (по крайней мере, для 240 точек на дюйм), но выглядит великолепно.