android 图标点击变大,使android桌面图标变大
在平板上android系統默認的桌面圖標太小了,需要將其放大。之前在launcher中做了簡單的圖片放大,帶
來了圖標模糊的問題,重新研究源碼尋求解決辦法。
(1)解決思路是先找到應用程序的圖標等信息是怎么獲取的。這就需要學習PackageManager的相關源碼。
PackageManger類包含以下功能:
安裝,卸載應用
查詢permission相干信息
查詢Application相干信息(application,activity,receiver,service,provider及響應屬性等)從
AndroidManifest.xml獲取的這些的信息
查詢已安裝應用
增長,刪除permission
清除用戶數據、緩存,代碼段
可以通過getPackageManager()方法獲得。
此類是一個抽象類。它的實現過程可以參考http://blog.csdn.net/ljsbuct/article/details/6636433中的分析。
PackageItemInfo類
說明: AndroidManifest.xml文件中所有節點的基類,提供了這些節點的基本信息:a label、icon、 meta-data。
常用字段:
public int icon ?獲得該資源圖片在R文件中的值 (對應于android:icon屬性)
public int labelRes 獲得該label在R文件中的值(對應于android:label屬性)
public String name ? 獲得該節點的name值 (對應于android:name屬性)
public String packagename ? 獲得該應用程序的包名 (對應于android:packagename屬性)
常用方法:
Drawable ?loadIcon(PackageManager pm) 獲得當前應用程序的圖像
CharSequence ?loadLabel(PackageManager pm) ? ? 獲得當前應用程序的label
PackageItemInfo類中的這些方法時利用PackageManager中的方法實現的。
PackageItemInfo類并不直接使用,而是由子類繼承然后調用相應方法。例如ActivityInfo類、ServiceInfo類和ApplicationInfo類等。
(2)我們來具體看下Launcher中時如何獲取應用程序icon的:
在IconCache.java中的
private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info) {
.....
entry.icon = Utilities.createIconBitmap(
info.activityInfo.loadIcon(mPackageManager), mContext);
}
也就是調用ActivityInfo類的loadIcon來獲取drawable型的icon信息。
接著我們看Utilities中的createIconBitmap方法,其中有
if (sourceWidth > 0 && sourceWidth > 0) {
// There are intrinsic sizes.
if (width < sourceWidth || height < sourceHeight) {
// It's too big, scale it down.
final float ratio = (float) sourceWidth / sourceHeight;
if (sourceWidth > sourceHeight) {
height = (int) (width / ratio);
} else if (sourceHeight > sourceWidth) {
width = (int) (height * ratio);
}
} else if (sourceWidth < width && sourceHeight < height) {
// It's small, use the size they gave us.
width = sourceWidth;
height = sourceHeight;
}
}
這段代碼對icon大小處理,如果icon是固有尺寸大于我們定義的尺寸就進行裁剪,如果小于我們定義的尺寸就采用其固有尺寸。
而尺寸是在這里定義的:
sIconWidth = sIconHeight = (int) resources.getDimension(android.R.dimen.app_icon_size);
定義這個app_icon_size是在\frameworks\base\core\res\res\values中的dimens.xml中。
總結
以上是生活随笔為你收集整理的android 图标点击变大,使android桌面图标变大的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android功能导航布局,安卓9.0新
- 下一篇: android include 点击事件