相关疑难解决方法(0)

ICS上的位图加载了错误的像素格式

我遇到了以下问题.当任何位图从资源由冰淇淋三明治运行的应用程序加载时,它可能会被不正确地,如果它已经被解码的格式,这不同于当前窗口的格式,在没有施加抖动呈现.但是,解码格式和窗口格式都已明确设置:

BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inPreferredConfig = Bitmap.Config.RGBA_8888;
Run Code Online (Sandbox Code Playgroud)

getWindow().setFormat(PixelFormat.RGBA_8888);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Run Code Online (Sandbox Code Playgroud)

以下是从使用ICS 4.0.3的仿真器上运行的本文中获取的测试应用程序的屏幕截图(它在HTC HD2上提供相同的结果):

RGBA_8888(32位)窗口格式,各种位图解码格式: 32位窗口格式

RGB_565(16位)窗口格式,各种位图解码格式: 16位窗口格式

有几点可以注意到:

  • 不时不考虑抖动标志;
  • ICS的默认窗口格式似乎是RGB_565;
  • RGB_565 窗口格式RGBA_8888 位图解码格式出现唯一好看的渐变.

在这些问题中也报告了这个问题,但仍然没有找到解决方案:

渐变兼容性问题 - ICS默认的颜色比以前的所有Android版本都少

Android中糟糕的背景图像质量

该quistion是,如何处理所有这些格式在ICS,更准确地说,如何使ICS负载与位图RGBA_8888格式,以及如何设置窗口格式RGBA_8888,以便这些位图显示正确?

android drawable android-4.0-ice-cream-sandwich

12
推荐指数
1
解决办法
2841
查看次数

LG G手表不显示具有全色深度的32位图像或渐变

在我运行Android 5.0.1的LG G Watch上,我一直在努力让渐变显得平滑.

在你标记为重复之前,我已经尝试了几个帖子的每个答案(比如为什么android在显示png文件时会丢失图像质量?,是否可以抖动渐变可绘制?,android:dither ="true"不会抖动,有什么不对?,彩色条带Android解决方案,色带,并与梯度文物尽管使用RGBA_8888无处不在,颜色只能在Android 4.0以上版本的条带,在Android的可怕的背景图像质量),但似乎都不适用.


以下是我创建渐变的步骤

1)从最新的Android SDK加载示例'Wearable:Watch View Stub'项目

2)将rect_background.xmldrawable 更改为:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="@dimen/rect_corner_radius"/>
    <gradient android:startColor="@color/light_grey"
        android:endColor="@color/white"
        android:angle="90"/>
</shape>
Run Code Online (Sandbox Code Playgroud)

3)这是仿真器上的样子

在此输入图像描述

4)这是我从设备进行屏幕捕获时的样子: 在此输入图像描述

5)但是当我亲眼看到它时,有一种可怕的条纹:(在现实生活中看起来更糟糕;图像不公正) 在此输入图像描述 在此输入图像描述

以下是亲眼看到的模拟图像(128种颜色): 在此输入图像描述

我也尝试过:

  • 使用png位图(24位)
  • 使用带有1个透明像素(32位)的png位图
  • 使用带有所有半透明像素(32位)的png位图
  • 使用比特深度减少的png位图(256色)
  • 使用100质量的jpeg.

  • 在创建布局之前和之后,在Activity中手动将PixelFormat设置为RGBA_8888

  • 打开活动中的抖动
  • 使用自定义位图加载器从代码加载位图(设置像素格式,抖动等,请参阅Android中的可怕背景图像质量)
  • 关闭ImageView的任何缩放
  • 将图像放在drawable,drawable-hdpi和raw文件夹中
  • 解压缩APK并验证图像是否已解压缩.

所有这些都以同样的方式出现.


如何让它在设备上正确显示?

还有其他人看到这个问题吗?根据这个网站,LG G Watch的颜色深度为24位,每通道应为8位.设备上的正常图像显示正确 - 没有明显的条带.

android bit-depth wear-os

8
推荐指数
1
解决办法
686
查看次数

Android的渐变抽象:Eclipse中的屏幕截图质量很差

我正在使用类似下面的drawables作为渐变背景:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
        android:startColor="#ffffff"
        android:endColor="#cccccc"
        android:angle="-90"
        android:dither="true" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这会在模拟器上产生带状渐变,当我拍摄模拟器的截图(使用Eclipse)时,结果甚至更差:

在此输入图像描述

为什么?以及如何解决这个问题?这是虽然我使用android:dither="true"的可绘XML,并在此设置ActivityonCreate():

    getWindow().setFormat(PixelFormat.RGBA_8888);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DITHER);
Run Code Online (Sandbox Code Playgroud)

顺便说一下,蓝色部分是原生动作栏,灰色渐变是ListView背景可绘制的行.

eclipse android gradient android-drawable

6
推荐指数
2
解决办法
2729
查看次数