关于android应用图标在部分手机显示白色背景的探索

 很长一段没有写博客了,也许是因为懒,也许是因为我不大喜欢搞技术的。是这样的,我对自己很有信心,很想在销售行业大展手脚,只是我老婆不大认同我做销售。我呢,是一个非常爱我老婆的,很听我老婆的话,我不会容许我自己去伤害我老婆,更不容许有人欺负我老婆。老婆的顾虑是:我是块做技术的料,另外原本我就是油嘴滑舌,做销售容易变坏,而做技术,会让人觉得更有安全感,所以她强烈要求我专研技术模块。
好了,简单介绍一下我们公司的情况,我们公司是专研会员系统的。根据公司领导的光明带领下,我们开发出了新一代会员系统以及移动端app“惠员”。前几天,也就是2016年8月30号,我们公司副总经理张总一早来公司,就拿着他新买的手机(原本用的是小米手机,前几天刚买了一个华为荣耀手机)过来给我看,说发现了一个小问题:惠员安装在张总的手机上,图标显示有一些白色的背景。并说这个不是严重的问题,可以在不忙的时候解决它。我感到非常的奇怪,之前我很多手机上安装了我们的惠员,但是从来都是没有白色的背景的,安装后用户体验上都是非常好的,并且我也很自信,因为我基本上都是根据UI给我的图标放到对应的分辨率资源上的,然而跑到了张总手机上却有白色背景,另外让我觉得非常惊讶的是,其他app安装到他手机上的都不存在这样的问题(比如京东)。
今天,终于等到了不忙,就来研究了一下关于android应用程序图标的显示问题。于是,我就开始了我的探索实验。
实验思路:
1.探索不同分辨率的手机应用程序读取图片的资源位置及同一手机分别读取同名的不同图片资源
2.探索京东是如何做到适配所有屏幕的

实验一:
1.整理图片资源
2.配置app图标


好了,根据思路1进行实验,我分别选择了不同的图片资源,统一命名为logo,分别放到指定的资源路径下
整理图片资源:
![图1](https://img-blog.csdn.net/20160902094914793)

mipmap-hdpi下对应图片:
![图2](https://img-blog.csdn.net/20160902092938651)
mipmap-mdpi下对应图片:
![图3](https://img-blog.csdn.net/20160902093059715)
mipmap-xhdpi下对应图片:
![图4](https://img-blog.csdn.net/20160902093140111)
mipmap-xxhdpi下对应图片:
![图5](https://img-blog.csdn.net/20160902093236810)
mipmap-xxxhdpi下对应图片:
![图6](https://img-blog.csdn.net/20160902093313487)

说明:图1就是图片资源放置的结构图,图2、图3、图4、图5分别是图1下对应路径存放的图片

配置app图标:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.h.myapplication" >

    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/logo"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
好了,实验一主要步骤弄好了,我分别使用了屏幕分辨率为720x1280和1080x1920的手机进行了测试,测试结果如下:
720x1280手机:安装后显示的图标是图4
1080x1920手机:安装后显示的图标是图5

这样的结果当然是意料之中的,因为对应的资源文件本来就是对应着这些分辨率的手机的。于是我又进行了进一步实验,让手机不变,图片变。
我用720x1280的手机来测试,然后把mipmap-xhdpi下的logo图片删除,也就是mipmap-xhdpi下没有图片了。这时运行安装后,图标显示的是mipmap-xxhdpi下的图片,即图5。如果把mipmap-xxhdpi下的logo删除,运行安装,最后显示的是mipmap-xxxhdpi下的图片,即图6。如果把mipmap-xxhdpi下的logo删除,运行安装,最后显示的是mipmap-hdpi下的图片,即图2。如果把mipmap-hdpi下的logo删除,运行安装,最后显示的是mipmap-mdpi下的图片,即图3。

由此实验结果,可以得出一个结论:
android应用程序读取图片资源时,会优先读取当前手机屏幕分辨率对应的图片资源,如果该分辨率对应图片资源不存在,则会优先读取高一级(大于当前分辨率图片资源)的同名图片资源,如果该图片资源仍然不存在,继续往高级读取同名图片资源,如果高级也都不存在,则会优先读取低一级(小于当前分辨率)的同名图片资源,如果低一级图片资源也不存在,则继续读取更低一级同名图片资源,直到发现同名图片资源为止。

好了,到这里,我们已经完成了android应用程序图标读取图片资源的探索,实际上通过探索发现android应用程序读取图片资源也是跟图标读取资源是一样的。但到目前为止,似乎还是无法解决应用程序安装到张总手机上后,会出现的白色背景的问题。于是继续探索实验二

实验二:反编译京东apk,获取其图片资源进行测试

根据实验二的思路,于是我从网上下载了京东的apk,对其进行了反编译apk,找到了对应的res文件夹,最终找到了各种屏幕分辨率对应的图片资源,然后我就把这些图片资源分别copy到我的项目中对应的位置,运行安装到张总的手机上,神奇的发现,图标白色背景消失了。这说明了什么问题?说明了京东UI切出来的图标是ok的,然而我们公司的图标是不能适配比较特殊的手机的

发现了问题出现的原因,那就解决呗,于是让UI根据京东的图标重新切了一套,完美解决问题

猜你喜欢

转载自blog.csdn.net/huangxuanheng/article/details/52412608