android – LG G手表不显示全彩色深度的32位图像或渐变

android – LG G手表不显示全彩色深度的32位图像或渐变,第1张

概述我一直在努力让运行 Android 5.0.1的LG G Watch上的渐变显得平滑. 在你标记为重复之前,我已尝试过几个帖子的每个答案(如Why android lose image quality when displaying a png file?,Is it possible to dither a gradient drawable?,android:dither=”true” doe 我一直在努力让运行 Android 5.0.1的LG G Watch上的渐变显得平滑.

在你标记为重复之前,我已尝试过几个帖子的每个答案(如Why android lose image quality when displaying a png file?,Is it possible to dither a gradient drawable?,android:dither=”true” does not dither,what’s wrong?,Color Banding Android Solution,Color banding and artifacts with gradients despite using RGBA_8888 everywhere,Color banding only on Android 4.0+,Awful background image quality in Android),但似乎都没有适用.

以下是我创建渐变的步骤

1)从最新的AndroID SDK加载示例’Wearable:Watch VIEw Stub’项目

2)将rect_background.xml drawable更改为:

<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>

3)这是模拟器上的样子

4)这是我从设备进行屏幕捕获时的样子:

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

以下是亲眼看到的模拟图像(128种颜色):

我也尝试过:

>使用png位图(24位)
>使用带有1个透明像素(32位)的png位图
>使用带有所有半透明像素(32位)的png位图
>使用比特深度减少的png位图(256色)
>使用100质量的jpeg.
>在创建布局之前和之后,在Activity中手动将PixelFormat设置为RGBA_8888
>打开活动中的抖动
>使用自定义位图加载器从代码加载位图(设置像素格式,抖动等,请参阅Awful background image quality in Android)
>关闭ImageVIEw的任何缩放比例
>将图像放在drawable,drawable-hdpi和raw文件夹中
>解压缩APK并验证图像是否已解压缩.

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

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

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

解决方法 我能够在我的LG G手表上产生一个平滑的gardIEnt,如下所示:

步骤1:

手动将像素格式设置为RGB_565

@OverrIDepublic voID onAttachedToWindow() {    super.onAttachedToWindow();    getwindow().setFormat(PixelFormat.RGB_565);}

第2步:

您必须在Wear AndroIDManifest.xml中停用硬件加速.将此属性添加到应用程序标记:

androID:harDWareAccelerated="false"

第3步:

定义绘制背景的新方法:

public static Bitmap drawabletoBitmap (Drawable drawable,int height,int wIDth) {    if (drawable instanceof BitmapDrawable) {        return ((BitmapDrawable)drawable).getBitmap();    }    Bitmap bitmap = Bitmap.createBitmap(wIDth,height,Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);    drawable.setBounds(0,canvas.getWIDth(),canvas.getHeight());    drawable.draw(canvas);    return bitmap;}

第4步:

将其应用于您的布局:

Bitmap bpBackground = drawabletoBitmap(getResources().getDrawable(R.drawable.rect_background),280,280);BitmapDrawable bdBackgorund = new BitmapDrawable(getResources(),bpBackground);myLayout.setBackground(bdBackgorund);

不幸的是我无法让它在WatchVIEwStub中运行,但我认为这可能已经帮助您解决问题.

第1步& 2是获得体面结果所必需的,步骤3& 4再次提高质量.

你可以在这里找到整个解决方案:https://github.com/lukeisontheroad/WatchViewStubStackOverflowSolution

总结

以上是内存溢出为你收集整理的android – LG G手表不显示全彩色深度的32位图像或渐变全部内容,希望文章能够帮你解决android – LG G手表不显示全彩色深度的32位图像或渐变所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138427.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存