Я работаю на устройстве Gingerbread (2.3.3).У меня есть ImageView, который содержит рисунок стрелки и имеет полностью прозрачный фон, который мне нужно нарисовать на некотором фоне.Проблема в том, что под ограничивающей рамкой ImageView находится артефакт «затенения».
Если вы внимательно посмотрите на следующее изображение, вы увидите артефакт, о котором я говорю: 1
Как переднее, так и фоновое изображение имеют альфа-каналы и, следовательно, декодируются как ARGB8888 (я дважды проверил это, вручную расшифровав их ресурсы в растровое изображение, распечатав конфигурацию растрового изображения, которая показала ARGB8888, а затем назначив их соответствующимПросмотры).Я также настроил окно Activitiy на PixelFormat.RGBA_8888 перед вызовом setContentView ().
Пожалуйста, не отсылайте меня на потоки, которые предлагают декодировать растровое изображение как ARGB8888, и / или установите для окна значение RGBA_8888,так как я попробовал оба решения, которые не помогли.
Есть идеи, как я могу решить эту проблему?
РЕДАКТИРОВАТЬ:
Вот функциякоторый устанавливает формат пикселя Window и рисованные элементы (вызываемые непосредственно из onCreate ()):
public void testTransparency() {
getWindow().setFormat(PixelFormat.RGBA_8888);
setContentView(R.layout.transparency_test);
LinearLayout ll = (LinearLayout)findViewById(R.id.ll);
Bitmap bgBmp = BitmapFactory.decodeResource(getResources(), R.raw.bg);
Log.d(TAG,"BG BMP Config: " + bgBmp.getConfig());
ll.setBackgroundDrawable(new BitmapDrawable(bgBmp));
ImageView iv = (ImageView)findViewById(R.id.iv);
iv.setBackgroundDrawable(null);
Bitmap arrowBmp = BitmapFactory.decodeResource(getResources(), R.raw.big_arrow);
Log.d(TAG,"Arrow BMP Config: " + arrowBmp.getConfig());
iv.setImageBitmap(arrowBmp);
}
А вот (очень простая) компоновка, которую использует мой тест:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center">
<ImageView android:id="@+id/iv"
android:layout_width="72dp"
android:layout_height="120dp"
/></LinearLayout>
Ресурс 'bg' можно найти по адресу 2
Ресурс 'big_arrow' можно найти по адресу "http://i.imgur.com/3V6QU.png"
РЕДАКТИРОВАТЬ 2:
Я обнаружил, что не могу воспроизвести проблему ни на эмуляторе, ни на моем N1 (2.3.4) или XOOM (3.2.1). Отсюда продолжаются 2 варианта:
1. Проблема связана с устройством(Android-устройство, над которым я работаю)
2. Существует специфическая проблема с 2.3.4 и 32BPP-фреймом.ebuffer при рендеринге прозрачных PNG друг на друга.
Спасибо.