MT8735平台Android5.1系统定制Launcher3系统桌面
我的工作怡康智能服务终端,继续进行中,在帖子宇朔医疗项目进展,展示了为该项目定制的桌面效果图。现在, 在2018年到来之前将这个小目标实现了:
为定制这个 桌面,做了如下改动:
1. 背景图片显示“怡康智能服务终端字样”,背景图片不被拉伸(过程)
在 packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 下添加:
2. 在桌面默认显示天气小部件、健康管理、信息、设置、一键拨号:
packages/apps/Launcher3/res/xml/default_workspace_5x5.xml
为了能够预置<appwidget/>,需要在Launcher3/Anroid.mk中添加 LOCAL_PRIVILEGEND_MODULE := true,这样编译生成的Launcher3.apk 会生成到/system/priv-app/目录下。
3. 去除HotSeat;桌面无长按选项;去除主菜单,只保留桌面。
该项目无需HotSeat,项目需要的软件比较少,需要尽量保持简洁的桌面。
(1)去除HotSeat
packages/apps/Launcher3/res/layout-land/launcher.xml
(2)桌面无长按事件
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 将 public boolean onLongClick(View v) 中的代码去掉,return true。
(3)去除主菜单,只保留桌面
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppState.java 将 static boolean isDisableAllApps() 中的代码去掉,return false。
4. 禁止删除和移动桌面的所有图标
(1)应用快捷键可以点击进入,但是不可移动和删除
因为无桌面长按事件,桌面上的不可长按移动和删除。应用图标的显示循序,在设置桌面默认显示时已经布好。
(2)天气插件点击不可进入,不可移动
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppWidgetHostView.java 在 public boolean onInterceptTouchEvent(MotionEvent ev) return false 改为 return true
5. 去除背景阴影特效
packages/apps/Launcher3/res/layout-land/launcher.xml 去除 android:background="@drawable/workspace_bg"
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 去除 setWorkspaceBackground 中的 代码,不加载背景特效
去除背景特效之后:
为定制这个 桌面,做了如下改动:
1. 背景图片显示“怡康智能服务终端字样”,背景图片不被拉伸(过程)
在 packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 下添加:
- private void setDefaultWallPaper() {
- WallpaperManager mwallpaerManager;
- mwallpaerManager = WallpaperManager.getInstance(this);
- DisplayMetrics dm = new DisplayMetrics();
- getWindowManager().getDefaultDisplay().getMetrics(dm);
- int desiredMinimumWidth = dm.widthPixels;
- int desiredMinimumHeight = dm.heightPixels;
- //使壁纸不被裁剪放大模糊
- mwallpaerManager.suggestDesiredDimensions(desiredMinimumWidth,
- desiredMinimumHeight);
- Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
- R.drawable.default_wallpaper);
- try {
- mwallpaerManager.setBitmap(bitmap);
- } catch (IOException e) {
- Log.e(TAG, "set default wallpaper error");
- e.printStackTrace();
- }
- }
2. 在桌面默认显示天气小部件、健康管理、信息、设置、一键拨号:
packages/apps/Launcher3/res/xml/default_workspace_5x5.xml
- <!-- 系统桌面添加应用 -->
- <favorite
- launcher:packageName="com.rz.yk.health" // 完整包名
- launcher:className="com.rz.yk.health.ui.main.StartUpActivity" //完整包名.类名(处理main intent的类)
- launcher:screen="0" // 应用图标所在的屏幕(从0开始)
- launcher:x="0" // 应用图标所在的列
- launcher:y="4" /> // 应用图标所在的行
- ...................
- <!-- 系统桌面添加天气小部件 -->
- <appwidget
- launcher:packageName="com.moji.mjweather" // 插件完整包名
- launcher:className="com.moji.mjweather.CMojiWidget4x2" //插件完整包名.类名(处理main intent的类)
- launcher:screen="0" // 插件图标所在的屏幕(从0开始)
- launcher:x="0" // 插件图标所在的列
- launcher:y="0" // 插件图标所在的行
- launcher:spanX="3" // 插件在屏幕上X方向所占的格子数
- launcher:spanY="2" /> // 插件在屏幕上Y方向所占的格子数
3. 去除HotSeat;桌面无长按选项;去除主菜单,只保留桌面。
该项目无需HotSeat,项目需要的软件比较少,需要尽量保持简洁的桌面。
(1)去除HotSeat
packages/apps/Launcher3/res/layout-land/launcher.xml
- android:id="@+id/hotseat"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- - android:layout_gravity="end" />
- + android:layout_gravity="end"
- + android:visibility="gone"/> 《hotseat不显示》
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java 将 public boolean onLongClick(View v) 中的代码去掉,return true。
(3)去除主菜单,只保留桌面
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppState.java 将 static boolean isDisableAllApps() 中的代码去掉,return false。
4. 禁止删除和移动桌面的所有图标
(1)应用快捷键可以点击进入,但是不可移动和删除
因为无桌面长按事件,桌面上的不可长按移动和删除。应用图标的显示循序,在设置桌面默认显示时已经布好。
(2)天气插件点击不可进入,不可移动
packages/apps/Launcher3/src/com/android/launcher3/LauncherAppWidgetHostView.java 在 public boolean onInterceptTouchEvent(MotionEvent ev) return false 改为 return true
5. 去除背景阴影特效
packages/apps/Launcher3/res/layout-land/launcher.xml 去除 android:background="@drawable/workspace_bg"
- android:id="@+id/launcher"
- android:layout_width="match_parent"
- - android:layout_height="match_parent"
- - android:background="@drawable/workspace_bg">
- + android:layout_height="match_parent" >
- private void setWorkspaceBackground(boolean workspace) {
- - mLauncherView.setBackground(workspace ?
- - mWorkspaceBackgroundDrawable : null);
- + /* mLauncherView.setBackground(workspace ?
- + mWorkspaceBackgroundDrawable : null);*/
- }
带背景特效的效果图:
去除背景特效之后: