杂记

 

第一部分: 首先找到设置home screen上icon大小的位置。只可能有两个地方,一个是xml中指定,一个是在代码中指定。无论在哪里指定,都会在make icon的过程中引用,那么我先找到make icon的地方。在[email protected]中,有如下一句 info.icon = Utilities.createIconThumbnail(info.icon, this); 可以看到icon就是从这里创建的。那么接着找createIconThumbnail这个具体创建icon的方法。 在 [email protected]中 final Resources resources = context.getResources(); sIconWidth = sIconHeight = (int) resources.getDimension(android.R.dimen.app_icon_size); 这应该就是从xml中读取icon高和宽的语句,找到这个xml修改。在launcher的xml文件夹中的dimens.xml中找不到app_icon_size这个字段。接着找整个android系统的xml文件夹,在dimens.xml中找到<dimen name="app_icon_size">48dip</dimen>,这个应该就是的了。修改之,重新编译之,ok。 ============== 第二部分: 安装第一部分的操作,模拟器运行,发现问题,icon并没有变大。仔细看createIconThumbnail方法,发现读取到的app_icon_size仅仅做确定icon的最大的高和宽的作用,也就是说app_icon_size限定每个icon的最高和最宽的大小,并不是直接指定icon的高和宽。 同时,launcher中是划分为每个格子cell的大小的,这个大小也对icon的布局有影响。因为如果icon大小超过了cell的大小显然是不允许的。cell的大小在这里来修改 Android_src\packages\apps\Launcher\res\layout-land\workspace_screen.xml Android_src\packages\apps\Launcher\res\layout-port\workspace_screen.xml 一个是横屏布局,一个竖屏布局。launcher:cellWidth这个字段是宽,launcher:cellHeight是高。 ============== 第三部分: 在laucher的源代码中,对laucher上的icon是这么判断的,如果实现app的icon大于icon_size的值,则对其进行缩小。如果app的icon小于icon_size的值,则按照icon的原大小画上去。所以我们如果要enlarge launcher上的icon size,就必须add code to enlarge the icon size。 Android_src\packages\apps\Launcher\src\com\android\launcher\Utilities.java createIconThumbnail function. /*customed icon. * author: Welly Liu * date: 12.16.2010 */ final float ratio ; if(iconWidth < iconHeight) { ratio = (float)height/iconHeight; width = (int)(ratio*iconWidth); } else { ratio = (float)width/iconWidth; height = (int)(ratio*iconHeight); } final int x = (sIconWidth - width) / 2; final int y = (sIconHeight - height) / 2; icon.setBounds(x, y, x + width, y + height); ================= 第四部分: 经过以上三个部分的操作,测试发现有两个问题。 1. 抽屉当中的app icon也变大了,这个不是我所希望的。 2. laucher screen中的上下文菜单中的folders菜单中的子菜单有问题,分别为All contacts,Bluetooth Received,Starred contacts,Contacts with phone numbers 这四个菜单点击后,会在screen上出现live folder的icon,这个icon没有变大。 ================= 第五部分: 解决第一个问题,让抽屉当中的app icon不受影响。 找到app icon的由来。app 在抽屉中的显示,是一个gridview,由文件AllAppsGridView.java实现,每一个item由ApplicationsAdapter.java中定制的atapter来提高item,当然包括view。找到ApplicationsAdapter钟对getView的定义,发现了 info.icon = Utilities.createGridIconThumbnail(info.icon, getContext()); 那么把这个地方的icon不受以前的改变就可以了。 ================ 第六部分 解决第二个问题,如何让这些folder的icon也变大? 经过研究laucher的代码发现launcher中其他菜单产生的app icon都是laucher中经过自己的代码createIconThumbnail 这个方法产生的,所以在这里可以改变icon。但是live folder产生的icon不是从这里产生的,而是从原生的app 应用程序当中得到。 那么就有了一个投机取巧的方法,将原生的app应用程序中的icon大小改为我们理想的大小就ok了。分别是contact 应用程序,它对应三个icon,还有Bluetooth 应用程序,对应一个

你可能感兴趣的:(xml,android,Date,float,resources,Numbers)