关于android中显示的问题,Android中高级面试必知必会

121 阅读4分钟

System.exit(0);

}

}

}

试了:先将图片转为索引模式,再转到RGB模式,光晕依然;将图片转到索引模式直接存成png格式,光晕依然;……反反复复效果都不太满意。找了这段代码,让程序加上,果然光晕不再。

Android <wbr>PNG渐变背景图片失真问题

Android <wbr>PNG渐变背景图片失真问题

Android PNG渐变背景图片失真问题

最近一个困扰很久的问题,渐变效果的png图片,设置为控件图片或background时,在eclipse上看着没有什么问题,但是在设备上运行时,可以看到明显的一圈圈的轮廓线,图片严重失真。

在网上google了一下似乎这个问题很多人遇到,找到一种解释是Android设备display默认是采用16-bitscolor palette来表示所有颜色,因此对于带alpha值的32位png图片会出现显示失真。

这个问题有两种解决方法:

1.第一种方法最简单直接(推荐),设置需要显示Activity的PixelFormat,

getWindow().setFormat(PixelFormat.RGBA_8888);

PS:在onCreate()中直接加

RGBA_8888为android的一种32位颜色格式,R,G,B,A分别用八位表示,Android默认格式是PixelFormat.OPAQUE,其是不带Alpha值的。设置之后可以看到图片的显示效果就和在PC上看到一样,不会出现带状的轮廓线了。

2.第二种方法比较麻烦,就是将你需要要显示的view设置为一个surfaceview,这样也可以达到同样的显示效果,但这种方法代价较大,不推荐。

The artefact you are seeing is known as "banding"and it is a consequence of your display being16bits perpixel.(On Android 2.2 and lower thedefault pixel format is 16-bit(565/PixelFormat.OPAQUE ).)

The best way to resolve this is to add some "noise" to yourimage asset in Photoshop or Paint.NET.

Alternatively you can set your window to be 32bpp with thefollowing line added to your activity'sonCreate(),between super.onCreate() and setContentView().:

getWindow().setFormat(PixelFormat.RGBA_8888);或者PixelFormat.TRANSLUCENT

-----------------

如果以上方法依然不能实现去除手机中图片显示渐变存在光晕效果的话,你可以适一下在PS里的处理方法:“Thebest way to resolve this is to add some "noise" to your image assetin Photoshop orPaint.NET”我用了这个方法数值设置的是1.5。算是解决了问题。虽然手机开发的很多情况下会使用.png格式,但是当图片大小与质量并不匹配的时候,或许可以换一种文件格式,在这里建议使用jpg的,压缩大小与质量相衬。

PS:这适用于很多情况,要相衬才好。

1.     采用硬件加速,在androidmanifest.xml中application添加  android:hardwareAccelerated="true"。不过这个需要在android 3.0才可以使用。

2.     View中设置缓存属性.setDrawingCache为true.

3.      优化你的布局。通过Android sdk中tools目录下的layoutopt 命令查看你的布局是否需要优化。

4.      动态加载View. 采用ViewStub 避免一些不经常的视图长期握住引用.

5.      将Acitivity 中的Window 的背景图设置为空。getWindow().setBackgroundDrawable(null);android的默认背景是不是为空。

6.      采用 优化布局层数。 采用来共享布局。

尾声

最后,我再重复一次,如果你想成为一个优秀的 Android 开发人员,请集中精力,对基础和重要的事情做深度研究。

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。 以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,点这里可以看到全部内容

  • 自行下载直达领取链接:【GitHub

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)