Обновлено
У меня проблема с градиентными растровыми изображениями на Android 2.3. Я прочитал эту отличную статью и расшифровал свои растровые изображения, используя следующие параметры:
<code>BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = true;
А на андроиде 2.2 все отлично, но на андроиде 2.3 даже после этого декодирования остаются артефакты градиента.
Я запускаю приложение из статьи на 2.3 с моими растровыми изображениями, и все варианты плохие: 16/32 бит, (не) дизеринг и RBG_565, ARGB_8888 и ARGB_4444 - у градиента есть артефакты. Также я пытался декодировать без параметров. Все в порядке. Извините, проблема была в
<code>opts.inScaled=true;
opts.inDensity=100;
opts.inTargetDensity=800;
<Ч />
Но теперь мне нужно заставить работать этот код на Android 2.3, и он все еще производит плохой градиент (на Android 2.2 все в порядке):
<code> ImageView imageView = (ImageView) tabView.findViewById(R.id.tabsImage);
// decode bitmaps
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inDither = true;
Bitmap tabImageOn = BitmapFactory.decodeResource(mainActivity.getResources(), tabImageResourceOnId, options);
Bitmap tabImageOff = BitmapFactory.decodeResource(mainActivity.getResources(), tabImageResourceOffId, options);
// create new selector
StateListDrawable tabImage = new StateListDrawable();
tabImage.addState(new int[] { android.R.attr.state_selected }, new BitmapDrawable(mainActivity.getResources(), tabImageOn));
tabImage.addState(new int[] {}, new BitmapDrawable(mainActivity.getResources(), tabImageOff));
tabImage.setDither(true);
// set selector to tab
imageView.setImageDrawable(tabImage);
Я попытался установить формат окна в
onCreate
/ до / после этого метода следующим образом:
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(getWindow().getAttributes());
lp.format = PixelFormat.RGBA_8888;
getWindow().setAttributes(lp);
Но ничего не изменилось (это пряник, он использует 32-битный формат окна).
Почему появляется такое поведение и как я могу решить мою проблему?
Спасибо. Добрый день!