Android Launcher 一些默认修改(一)
1.如何设置Launcher2、Launcher3的壁纸同步
由于SprdLauncher1和SprdLauncher2中支持分开设置主屏壁纸和锁屏壁纸,
所以锁屏在获取壁纸的时候,会获取对齐的锁屏壁纸类型。
目前原生Launcher2和原生Launcher3不支持分开设置,
所以要保证原生Launcher2和原生Launcher3设置壁纸的时候,锁屏跟主屏保持一致,
只需要锁屏在获取壁纸的时候,获取的壁纸类型也是主屏壁纸类型。
修改如下:
请定位到KeyguardViewManager.java中的maybeCreateKeyguardLocked方法:
把Drawable drawable = wm.getDrawable(WallpaperInfo.WALLPAPER_LOCKSCREEN_TYPE);
修改为Drawable drawable = wm.getDrawable(WallpaperInfo.WALLPAPER_MAINMENU_TYPE);
2.如何修改使Launcher2中文件夹图标名称与应用名称保持水平
请定为到/packages/apps/Launcher2/res/values/dimens.xml文件中
调整下面的值即可:
2dp
3.android4.4 Launcher中如何隐藏主界面应用图标的应用名称?
以sprdLauncher2举例:
请定位到vendor/sprd/UniverseUI/SprdLauncher2/src/com/android/sprdlauncher2/CellLayout.java文件:
然后定位到addViewToCellLayout方法:
if (child instanceof BubbleTextView) {
BubbleTextView bubbleChild = (BubbleTextView) child;
bubbleChild.setTextVisibility(!mIsHotseat);
}
修改为:
if (child instanceof BubbleTextView) {
BubbleTextView bubbleChild = (BubbleTextView) child;
bubbleChild.setTextVisibility(false);
}
4.如何在sprdLauncher2中隐藏一个应用图标?
以隐藏百度地图为例,修改如下:
请定位到/vendor/sprd/UniverseUI/SprdLauncher2/src/com/android/sprdlauncher2/LauncherModel.java文件,
查找verifyApplications方法:
if (tmpInfos.isEmpty()) {
added.add(app);
}
修改为:
if (tmpInfos.isEmpty()) {
ComponentName cn = app.componentName;
Log.e(TAG,"cn = "+cn);
if(cn != null && !cn.equals("")){
if(!cn.toString().equals("ComponentInfo{com.baidu.BaiduMap/com.baidu.BaiduMap.BaiduMap}")){
added.add(app);
}
}
}
5.如果实现Launcher2中菜单列表背景半透明效果?
Android4.4中的Launcher2默认没有开启菜单列表背景透明效果,纯黑色背景效果不是太好,如果需要开启菜单背景透明效果,可以参考如下修改来实现:
diff --git a/packages/apps/Launcher2/res/layout/apps_customize_pane.xml b/packages/apps/Launcher2/res/layout/apps_customize_pane.xml
index a9d7ded..70ee6b5 100644
--- a/packages/apps/Launcher2/res/layout/apps_customize_pane.xml
+++ b/packages/apps/Launcher2/res/layout/apps_customize_pane.xml
@@ -16,7 +16,7 @@
+ android:background="#00000000">
6.0如何让launcher不被一键清理?
一键清理应用的目录:
\packages\apps\RamOptimize
在\res\values\arrays.xml文件里有对不需要清理的应用进行配置:
- com.sprd.ramoptimizer
- com.android.sprdlauncher2
...
- com.sprd.ramoptimizer
- com.sprd.videoswallpapers
如果想让自己的应用不被清理,把包名添加到recent_keep_app数组即可。
7.0LOCAL_OVERRIDES_PACKAGES的作用
关于android.mk中的LOCAL_OVERRIDES_PACKAGES,此变量可以使定义的其它模块无法编译生成到系统中,使用本模块作为替换。
比如在SprdLauncher2的android.mk里
定义了LOCAL_OVERRIDES_PACKAGES := Launcher3
在使用了SprdLauncher2的工程里就无法集成原生的 Launcher3。
8.如何提升Launcher中盒子等滑动特效的流畅度
Launcher中滑动特效的文件在:
SprdLauncher1\src\com\sprd\launcher3\effect
SprdLauncher2\src\com\sprd\sprdlauncher2\effect
盒子等特效相比于page特效主要慢在ALPHA绘制上,因为ALPHA绘制本身耗时就比较长,所以:
如果想提升滑动特效流畅度,请删除特效中getTransformationMatrix函数中关于ALPHA变化的代码:
如:
CrossEffect.java中:
去掉以下代码:
float absOffset = Math.abs(offset);
float mAlpha = 1.0F - absOffset * 0.4f;
view.setAlpha(mAlpha);
9.如何把SprdLaucher2的hotseat图标底下把对应的应用名称item显示出来?
1.代码调整:
CellLayout.java 里面的BubbleTextView bubbleChild = (BubbleTextView) child;
bubbleChild.setTextVisibility(!mIsHotseat); 改为bubbleChild.setTextVisibility(true);
Workspace.java 里面的((FolderIcon)child).setTextVisible(false);改为 ((FolderIcon)child).setTextVisible(true);
2.修改hotseat.xml布局文件:
根据需要调整,例如:
修改为
10.如何修改launcher中应用图标的行数和列数?
横屏:
\packages\apps\Launcher2\res\layout-land\workspace_screen.xml
竖屏
\packages\apps\Launcher2\res\layout-port\workspace_screen.xml
修改里面格子的数量
launcher:shortAxisCells=”4″
launcher:longAxisCells=”4″
还可以调整一下格子们与左右和上下的边距
launcher:longAxisStartPadding=”65dip”
launcher:longAxisEndPadding=”65dip”
launcher:shortAxisStartPadding=”0dip”
launcher:shortAxisEndPadding=”0dip”
11.如何修改launcher的屏幕数
首先,在Launcher.java代码中修改总的页数和默认显示页:
static final int SCREEN_COUNT = 5;
static final int DEFAULT_SCREEN = 2;//第一页是从0开始计数,这里是把第三个页面作为默认首页
第一个是定义屏幕个数,第一个参数是默认的首页。
其次:还需要修改 launcher.xml
导入了五个workspace_screen,在这里,参照上面修改的参数,添加或者删除workspace_screen。
并且 launcher:defaultScreen="2"> 定义的defaultScreen.要修改成对应的值。
另外,修改workspace.java中获取不到值时的默认首页,确保异常情况下默认首页一致
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Workspace, defStyle, 0);
mDefaultScreen = a.getInt(R.styleable.Workspace_defaultScreen, 1);
最后,对 res/xml文件中default_workspace.xml做出相应的修改。这里面是workspace初始显示的icon和widget。
12.如何添加壁纸资源到壁纸列表?
解决: 以wallpaper_lake.jpg为例
1.拷贝壁纸图片 wallpaper_lake.jpg和wallpaper_lake_small.jpg 到相应目录
packages/apps/Launcher2/res/drawable-对应像素/wallpaper_lake.jpg
packages/apps/Launcher2/res/drawable-对应像素/wallpaper_lake_small.jpg
2.在 res/values-hdpi/wallpapers.xml 中添加wallpaper_lake条目
+ - wallpaper_lake
..
此时,长按桌面,选择壁纸选项,就会在壁纸列表看到一个新的壁纸。
13.如何更换launcher中点击应用的高亮背景
workspace(idle)点击快捷图标的高亮背景为:
packages/apps/Launcher2/res/drawable/pressed_application_background.9.png
workspace(idle)方向键选中的高亮背景:
/packages/apps/Launcher2/res/drawable-hdpi/focused_application_background.9.png
Mainmenu(主菜单)点击应用的高亮背景为:
packages/apps/Launcher2/res/drawable-hdpi/background_icon.9.png
默认的高亮背景是点九格式的png文件,这样可以适应不同的布局大小,也可以设置不是点九的图片!
更换上面的图片实现自定义的背景
14.如何配置launcher使用大内存?
在launcher的AndroidManifest.xml中可以配置launcher使用大的堆内存,这样可以在一定程度上避免内存不足出现的out of memory错误。配置launcher使用大内存需要更改的属性名称为android:largeHeap。如下所示:
可以在values文件夹的config.xml中修改largeHeap的属性值。如下所示:
false
15.如何更改系统默认墙纸
默认墙纸位置在frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.jpg
不同分辨率的项目在对应的drawable目录下。
更改了默认墙纸后,为了与墙纸设置里面待选的墙纸保持一致,最好同步修改对应launcher下的墙纸。
launcher下墙纸位置:package/apps/Launcher2/res/drawable-nodpi/