Intereting Posts
Плавающая кнопка действия не реагирует, когда она нажата / коснулась Подтверждение и удаление в RecyclerView Метод Movement Link Movement блокирует listitem Переопределение стиля раскрывающегося списка для Spinner в диалоговом режиме Localytics – программный набор клавиш приложения Android FileNotFoundException получает выброшен из URL.openStream () Android: когда нужно отменить регистрацию слушателя – onStop () или onDestroy () Как отсортировать даты от текущей до старой даты на Android или Java? Невозможно установить маржу элемента в ListView с помощью настраиваемого адаптера Holoeverywhere: как программно удалить во время выполнения панель действий из активности Обработчик Android периодически Android получить .apk-файл из эмулятора Как запустить приложение Sencha Touch в Eclipse Изображение с закругленными углами после масштабирования с помощью ScaleType.CenterCrop Не удалось открыть связанное приложение с (профилем компании) url другим приложением для Android?

Изображение не отображается полностью белым, несмотря на то, что оно правильно белое

Для брызгохранилища я использую изображение, которое содержит белый фон (чистый белый – отмечен в Photoshop). По какой-то причине он показывает небольшое зеленое bg против белого bg по умолчанию активности, как отмечено на снимке экрана. Только в некоторых устройствах, таких как

ImageView теперь показывает белый фон, несмотря на то, что изображение использует белый

Я добавляю это как отдельный вид в макете кадра к активности:

<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="fitCenter" android:src="@drawable/splashscreen" /> </FrameLayout> 

Есть идеи? Я читал о проблемах с RGB888 и RGB565, но не смог найти правильное решение.

Примечание. Я уверен, что можно сделать изменение белого на изображении прозрачным, но предпочтут понять проблему и найти правильное решение.

Это действительно раздражает. Интересно, почему так мало людей столкнулись с этой проблемой, поскольку это должно появиться на всех 32-битных дисплеях.

Вы упомянули о формате RGB888. Причиной проблемы является то, что независимо от исходного формата растрового изображения в файлах APK все растровые изображения сжимаются (в моем случае в индексированный 256-цветный! Wtf?).

Я не мог найти способ предотвратить это, поэтому, если кто-нибудь знает правильное решение, скажите, пожалуйста.

Однако я нашел два решения проблемы белого цвета.

1) Per-bitmap: Скажем, у нас есть ресурс bitmap с возможностью @drawable/mypng , называемый @drawable/mypng , что вызывает проблему. Нам нужно добавить дополнительный XML drawable drawable / mypng_nofilter.xml

 <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/mypng" android:filter="false" /> 

@drawable/mypng_nofilter вместо этого используйте @drawable/mypng_nofilter .

2) Для всей деятельности: В процессе работы по методу «Создать» нам нужно добавить

 getWindow().setFormat(PixelFormat.RGB_565); 

Теперь окно имеет 16-битную глубину цвета, и все растровые изображения выглядят «правильно» белыми.

Опять же, я бы предпочел иметь 32-битную глубину цвета, но я не знаю, как управлять сжатием изображений во время компиляции.

Я решил эту проблему, изменив тип Bitmap.CompressFormat на PNG вместо JPEG :

 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.nouv); Bitmap bitmap = (Bitmap)((BitmapDrawable) drawable).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); 

Я столкнулся с той же проблемой с загруженными через сеть изображениями. Я решил проблему, отключив битмап-фильтр. Поскольку у меня нет проблемы с ICS и более новыми устройствами, я отключил фильтр растрового изображения только для устройств с предварительной ICS. Ниже приведен код, который я использовал (настройка сетевой загрузки растрового изображения на ImageView).

 BitmapDrawable bitmapDrawable = new BitmapDrawable(imageView.getContext().getResources(), bitmap); bitmapDrawable.setFilterBitmap(false); imageView.setImageDrawable(bitmapDrawable); 

Поскольку у вашего изображения есть только изображение в середине, я бы посоветовал вам установить:

 android:scaleType="centerCrop" 

Он обрезает часть вашего изображения, слева и справа, но будет использовать весь экран …

Вы также можете определить фон для вашего FrameLayout или вашего ImageView, используя цвет вашего изображения (что кажется F8FCF8):

Android: фон = "# F8FCF8"