關於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根據京東的圖標重新切了一套,完美解決問題
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章