在你标记为重复之前,我已尝试过几个帖子的每个答案(如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位图像或渐变所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)