Launcher2修改--快捷界面和All Apps Icon大小和背景(二)
2015-11-04 10:04
513 查看
原创文章,转载注明出处:http://blog.csdn.net/deng0zhaotai/article/details/49633177
这里的修改均以横屏,分辨率为800*480为例,因为屏不同方向和分辨率使用的资源是不一样的,长按图标会出现格子,看到的布局,下面先来看下修改前后的对比图
修改前是4x4:
修改后是3x5:
修改的文件有layout-land/launcher.xml、values-land/dimens.xml、values/dimens.xml、Utilities.java
launcher.xml图标排列的修改
修改前:
修改前:
修改Hotseat的布局,要修改layout-land/hotseat.xml和Hotseat.java,修改前是1x5,修改后是1x3
修改前:
修改了app_icon_size的值为70后,在Apps(应用程序)主菜单模块界面会出现显示不全现象
由于values-land/dimens.xml的区域大小为以下值
AppsCustomizePagedView上的排列是动态计算出来的,根据屏幕的大小和以上配置文件的设置,计算出每一页显示几行几列,主要在AppsCustomizePagedView.java、PagedView.java这两个类中计算,感兴趣的可以看下AppsCustomizePagedView.java类的onDataReady(int width, int height)方法。
Launcher的修改已经迈出第一步,后续会慢慢进行深入的修改
修改后的源码下载:http://pan.baidu.com/s/1o6isndK
这里的修改均以横屏,分辨率为800*480为例,因为屏不同方向和分辨率使用的资源是不一样的,长按图标会出现格子,看到的布局,下面先来看下修改前后的对比图
修改前是4x4:
修改后是3x5:
修改的文件有layout-land/launcher.xml、values-land/dimens.xml、values/dimens.xml、Utilities.java
launcher.xml图标排列的修改
修改前:
<com.deng.launcher2.Workspace android:id="@+id/workspace" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/qsb_bar_height" android:paddingRight="@dimen/button_bar_height" launcher:cellCountX="4" //x方向图标个数 launcher:cellCountY="4" //y方向图标个数 launcher:defaultScreen="2" launcher:pageSpacing="@dimen/workspace_page_spacing" launcher:scrollIndicatorPaddingLeft="@dimen/qsb_bar_height" launcher:scrollIndicatorPaddingRight="@dimen/button_bar_height" >修改后:
<com.deng.launcher2.Workspace android:id="@+id/workspace" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/qsb_bar_height" android:paddingRight="@dimen/button_bar_height" launcher:cellCountX="5" //x方向图标个数 launcher:cellCountY="3" //y方向图标个数 launcher:defaultScreen="2" launcher:pageSpacing="@dimen/workspace_page_spacing" launcher:scrollIndicatorPaddingLeft="@dimen/qsb_bar_height" launcher:scrollIndicatorPaddingRight="@dimen/button_bar_height" >values-land/dimens.xml修改前:
<!-- Workspace 横屏 工作区存放图标位置的大小 不是图标的大小--> <dimen name="workspace_cell_width">106dp</dimen> <dimen name="workspace_cell_height">74dp</dimen> <!-- hotseat的显示区域--> <dimen name="hotseat_cell_width">64dp</dimen> <dimen name="hotseat_cell_height">58dp</dimen>修改后:
<!-- Workspace 横屏 工作区存放图标位置的大小 不是图标的大小--> <dimen name="workspace_cell_width">100dp</dimen> <dimen name="workspace_cell_height">100dp</dimen> <!-- hotseat的显示区域--> <dimen name="hotseat_cell_width">100dp</dimen> <dimen name="hotseat_cell_height">100dp</dimen>values/dimens.xml修改图标大小 修改前:
<dimen name="app_icon_size">48dp</dimen>修改后:
<dimen name="app_icon_size">70dp</dimen>Utilities.java文件添加图标背景图,在函数static Bitmap createIconBitmap(Drawable icon, Context context)上有这样一段代码
修改前:
// 测试用,加入sColors色彩背景边框 if (false) { // draw a big box for the icon for debugging canvas.drawColor(sColors[sColorIndex]); if (++sColorIndex >= sColors.length) sColorIndex = 0; Paint debugPaint = new Paint(); debugPaint.setColor(0xffcccc00); canvas.drawRect(left, top, left + width, top + height, debugPaint); }修改后把if里的条件改为true:
// 测试用,加入sColors色彩背景边框 if (true) { // draw a big box for the icon for debugging canvas.drawColor(sColors[sColorIndex]); if (++sColorIndex >= sColors.length) sColorIndex = 0; Paint debugPaint = new Paint(); debugPaint.setColor(0xffcccc00); canvas.drawRect(left, top, left + width, top + height, debugPaint); }如果要加入自己的背景图可以尝试以下代码代替以上代码
// 添加Launcher图标背景图片 if (false) { Bitmap backBitmap = BitmapFactory.decodeResource( context.getResources(), R.drawable.android_bg); int backWidth = backBitmap.getWidth(); int backHeight = backBitmap.getHeight(); if (backWidth != sIconWidth || backHeight != sIconHeight) { Matrix matrix = new Matrix(); matrix.postScale((float) sIconWidth / backWidth, (float) sIconHeight / backHeight); canvas.drawBitmap(Bitmap.createBitmap(backBitmap, 0, 0, backWidth, backHeight, matrix, true), 0.0f, 0.0f, null); } else { canvas.drawBitmap(backBitmap, 0.0f, 0.0f, null); } }R.drawable.android_bg是你自己的背景图片
修改Hotseat的布局,要修改layout-land/hotseat.xml和Hotseat.java,修改前是1x5,修改后是1x3
修改前:
<com.deng.launcher2.Hotseat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res/com.deng.launcher2" android:background="@drawable/hotseat_bg_panel" launcher:cellCountX="1" launcher:cellCountY="5" >Hotseat.java的常量
private static final int sAllAppsButtonRank = 2; // In the middle of the dock修改后:
<com.deng.launcher2.Hotseat xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res/com.deng.launcher2" android:background="@drawable/hotseat_bg_panel" launcher:cellCountX="1" launcher:cellCountY="3" >Hotseat.java的常量
private static final int sAllAppsButtonRank = 1; // In the middle of the dock
修改了app_icon_size的值为70后,在Apps(应用程序)主菜单模块界面会出现显示不全现象
由于values-land/dimens.xml的区域大小为以下值
<!-- AppsCustomize --> <dimen name="apps_customize_cell_width">80dp</dimen> <!-- The width can be 76dp because we don't have B padding --> <dimen name="apps_customize_cell_height">76dp</dimen> <dimen name="apps_customize_pageLayoutWidthGap">-1dp</dimen> <dimen name="apps_customize_pageLayoutHeightGap">-1dp</dimen> <dimen name="apps_customize_pageLayoutPaddingTop">5dp</dimen> <dimen name="apps_customize_pageLayoutPaddingBottom">5dp</dimen> <dimen name="apps_customize_pageLayoutPaddingLeft">5dp</dimen> <dimen name="apps_customize_pageLayoutPaddingRight">5dp</dimen>修改为:
<!-- AppsCustomize --> <dimen name="apps_customize_cell_width">100dp</dimen> <!-- The width can be 76dp because we don't have B padding --> <dimen name="apps_customize_cell_height">100dp</dimen> <dimen name="apps_customize_pageLayoutWidthGap">-1dp</dimen> <dimen name="apps_customize_pageLayoutHeightGap">-1dp</dimen> <dimen name="apps_customize_pageLayoutPaddingTop">10dp</dimen> <dimen name="apps_customize_pageLayoutPaddingBottom">10dp</dimen> <dimen name="apps_customize_pageLayoutPaddingLeft">10dp</dimen> <dimen name="apps_customize_pageLayoutPaddingRight">10dp</dimen>
AppsCustomizePagedView上的排列是动态计算出来的,根据屏幕的大小和以上配置文件的设置,计算出每一页显示几行几列,主要在AppsCustomizePagedView.java、PagedView.java这两个类中计算,感兴趣的可以看下AppsCustomizePagedView.java类的onDataReady(int width, int height)方法。
Launcher的修改已经迈出第一步,后续会慢慢进行深入的修改
修改后的源码下载:http://pan.baidu.com/s/1o6isndK
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories