Android Launcher3一些默认修改
来源:互联网 发布:nginx htaccess配置 编辑:程序博客网 时间:2024/06/05 00:25
Android Launcher3 一些默认配置修改
1.如何设置默认页
res/values/Config.xml <integer name="config_workspaceDefaultScreen">0</integer>在Launcher3 桌面,不管在哪一页,按HOME 键,会回到默认页。
2.如何隐藏launcher3中的搜索框
1. 在Launcher3/src/com/android/launcher3/Launcher.java中注释updateGlobalIcons()方法调用,共两处。public View getQsbBar() { if (mQsbBar == null) { mQsbBar = mInflater.inflate(R.layout.search_bar, mSearchDropTargetBar, false);- mSearchDropTargetBar.addView(mQsbBar); }+ mQsbBar.setVisibility(View.GONE); return mQsbBar;}@Overridepublic void bindSearchablesChanged() { //注释该方法内容/* boolean searchVisible = updateGlobalSearchIcon(); boolean voiceVisible = updateVoiceSearchIcon(searchVisible); if (mSearchDropTargetBar != null) { mSearchDropTargetBar.onSearchPackagesChanged(searchVisible, voiceVisible); }*/}2. 在Launcher3/src/com/android/launcher3/DynamicGrid.java中 // Layout the search bar //注释如下内容/* View qsbBar = launcher.getQsbBar(); LayoutParams vglp = qsbBar.getLayoutParams(); vglp.width = LayoutParams.MATCH_PARENT; vglp.height = LayoutParams.MATCH_PARENT; qsbBar.setLayoutParams(vglp);*/3. 在Launcher3/res/values/dimens.xml中 - <dimen name="dynamic_grid_search_bar_height">48dp</dimen> + <dimen name="dynamic_grid_search_bar_height">18dp</dimen>重新编译后即可看到效果。
3.如何调整原生Launcher3主界面的search框的大小?
修改如下:定位打/packages/apps/Launcher3/res/values/dimens.xml。<dimen name="dynamic_grid_edge_margin">3dp</dimen>//修改这个可以调整search框距离顶部距离。<dimen name="dynamic_grid_search_bar_max_width">500dp</dimen>//search框的宽度,一般不需要调整。<dimen name="dynamic_grid_search_bar_height">48dp</dimen>//search框的高度,不要调整为0,删除按钮需要占用一部分空间。
4.让主菜单部分应用按指定顺序排在前面?
添加res/values/arrays.xml:需要排序的应用:这里的item 内容一定要填写正确,否则会匹配不上,无法参与排序。<?xml version="1.0" encoding="utf-8"?><resources><string-array name="apps_componentName" translatable="false"> <item>ComponentInfo{com.android.vending/com.android.vending.AssetBrowserActivity}</item> <item>ComponentInfo{com.android.browser/com.android.browser.BrowserActivity}</item> <item>ComponentInfo{com.android.settings/com.android.settings.Settings}</item> <item>ComponentInfo{com.android.camera2/com.android.camera.CameraLauncher}</item> <item>ComponentInfo{com.android.mms/com.android.mms.ui.ConversationList}</item></string-array></resources>src/com/android/launcher3/Utilities.java+ import java.util.Arrays;+ import java.util.List;+ public static List<String> getAppsComponentName(final Context context) {+ return Arrays.asList(context.getResources().getStringArray(R.array.apps_componentName));+ }src/com/android/launcher3/LauncherModel.java protected int mPreviousConfigMcc;+ static List<String> appArray = new ArrayList<String>(); LauncherModel(LauncherAppState app, IconCache iconCache, AppFilter appFilter) { ...... mUserManager = UserManagerCompat.getInstance(context);+ appArray = Utilities.getAppsComponentName(context); }添加如下sortApps 方法:apps 按arrays.xml 排序,在原来的排序基础上,将arrays.xml 配置的应用按顺序排在前面。arrays.xml中没有涉及到的应用,还是原来的顺序。public static final void sortApps(ArrayList<AppInfo> apps) { int length = appArray.size(); List<AppInfo> assignApps = new ArrayList<AppInfo>(); for(int i=0;i<length;i++) { assignApps.add(i, null); } for(AppInfo app : apps){ for(int k=0; k<length; k++){ if (app.componentName.toString().equals(appArray.get(k))) { assignApps.set(k,app ); continue; } } } for (int i =length -1;i > -1 ;i--) { AppInfo app = assignApps.get(i); if(app != null){ apps.remove(app); apps.add(0, app); } } Log.d(TAG ,"The Apps List after Sort!");}src/com/android/launcher3/AppsCustomizePagedView.java public void setApps(ArrayList<AppInfo> list) { if (!LauncherAppState.isDisableAllApps()) { ...... SprdAppSortAddonStub.getInstance().sortApps(mApps);+ LauncherModel.sortApps(mApps);//在原来排序的基础上,再将arrays.xml中配置的应用按顺序排在前面。 updatePageCountsAndInvalidateData(); } } private void addAppsWithoutInvalidate(ArrayList<AppInfo> list) { ...... // SPRD: bug375932 2014-12-02 Feature customize app icon sort. SprdAppSortAddonStub.getInstance().sortApps(mApps);+ LauncherModel.sortApps(mApps);//在原来排序的基础上,再将arrays.xml中配置的应用按顺序排在前面。 }
5.如何确定待机HOME界面布局使用的是哪个default_workspace文件?
src/com/android/launcher3/DynamicGrid.java选择哪个default_workspace 和public DynamicGrid(Context context, Resources resources,int minWidthPx, int minHeightPx, int widthPx, int heightPx, int awPx, int ahPx)中的minWidthPx 和minHeightPx 以及该方法中创建的deviceProfiles 列表关。 minWidthPx 、minHeightPx 值转换为dpi之后 ,deviceProfiles 列表与其进行比较,选择与当前屏幕大小最接近的deviceProfiles 的default_workSpace作为最终Home界面使用的default_workspace。详细解释如下:src/com/android/launcher3/DynamicGrid.java中 1.deviceProfiles 列表如下: deviceProfiles.add(new DeviceProfile("Super Short Stubby", 255, 300, 2, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Shorter Stubby", 255, 400, 3, 3, 48, 13, (hasAA ? 3 : 5), 48, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Short Stubby", 275, 420, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Stubby", 255, 450, 3, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Nexus S", 296, 491.33f, 4, 4, 48, 13, (hasAA ? 5 : 5), 48, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Nexus 4", 335, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Nexus 5", 359, 567, 4, 4, DEFAULT_ICON_SIZE_DP, 13, (hasAA ? 5 : 5), 56, R.xml.default_workspace_4x4)); deviceProfiles.add(new DeviceProfile("Large Phone", 406, 694, 5, 5, 64, 14.4f, 5, 56, R.xml.default_workspace_5x5)); // The tablet profile is odd in that the landscape orientation // also includes the nav bar on the side deviceProfiles.add(new DeviceProfile("Nexus 7", 575, 904, 5, 6, 72, 14.4f, 7, 60, R.xml.default_workspace_5x6)); // Larger tablet profiles always have system bars on the top & bottom deviceProfiles.add(new DeviceProfile("Nexus 10", 727, 1207, 5, 6, 76, 14.4f, 7, 64, R.xml.default_workspace_5x6)); deviceProfiles.add(new DeviceProfile("20-inch Tablet", 1527, 2527, 7, 7, 100, 20, 7, 72, R.xml.default_workspace_4x4)); 2.重新计算MinWidth 和MinHeigh 单位是dpi。 mMinWidth = dpiFromPx(minWidthPx, dm); mMinHeight = dpiFromPx(minHeightPx, dm); 3.创建mProfile,mProfile.defaultLayoutId 就是最终Home界面使用的default_workspace 的id。 mProfile中的defaultLayoutId 是哪个default_workspace 见DeviceProfile.java。 mProfile = new DeviceProfile(context, deviceProfiles, mMinWidth, mMinHeight, widthPx, heightPx, awPx, ahPx, resources);src/com/android/launcher3/DeviceProfile.java DeviceProfile(Context context, ArrayList<DeviceProfile> profiles, float minWidth, float minHeight, int wPx, int hPx, int awPx, int ahPx, Resources res) { 方法中: 4.用屏幕宽高创建的点(PointF xy = new PointF(width, height))与 deviceProfiles中的w 和 h 创建的点(dimens = new PointF(widthDps, heightDps))进行比较,也就是从deviceProfiles 列表中找出和当前屏幕大小最接近的deviceProfiles。 DeviceProfile closestProfile = findClosestDeviceProfile(minWidth, minHeight, points); ...... 5.采用和当前屏幕大小最接近的deviceProfiles的default_workspace defaultLayoutId = closestProfile.defaultLayoutId;
6.如何替换第三方应用在launcher上显示的图标?
在launcher/src/com/android/launcher3/IconCache.java中修改,private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info, private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info, HashMap<Object, CharSequence> labelCache) { CacheEntry entry = mCache.get(componentName); if (entry == null) { entry = new CacheEntry(); mCache.put(componentName, entry); ComponentName key = LauncherModel.getComponentNameFromResolveInfo(info); if (labelCache != null && labelCache.containsKey(key)) { entry.title = labelCache.get(key).toString(); } else { entry.title = info.loadLabel(mPackageManager).toString(); if (labelCache != null) { labelCache.put(key, entry.title); } } if (entry.title == null) { entry.title = info.activityInfo.name; } Drawable icon; int index = sysIndexOf(componentName.getClassName()); Log.i("jxt", "index:"+index+",Name:"+componentName.getClassName()); icon = getFullResIcon(info); if (index >= 0) { entry.icon = Utilities.createIconBitmap(icon, mContext); } else { entry.icon = Utilities.createIconBitmap( /* SPRD: Feature 253522, Remove the application drawer view @{ */ // getFullResIcon(info), mContext); icon, mContext, true); } /* 此处即为替换图标代码 {@*/ if("第三方应用的componentName".equals(componentName.toString())){ entry.icon = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.xxx); } /* @} */ } return entry;}
7.如何去掉Launcher3的开机引导页面?
修改方案如下:请定位到src/com/android/launcher3/LauncherClings.java文件: class LauncherClings implements OnClickListener { ...... private static final String TAG_CROP_TOP_AND_SIDES = "crop_bg_top_and_sides- private static final boolean DISABLE_CLINGS = false;+ private static final boolean DISABLE_CLINGS = true;
8.为何Launcher3设置一些壁纸后,壁纸显示比预览图模糊?
预览的时候,没有做格式转化,所以显示正常!在设置壁纸的时候,默认是采用jpeg格式转换的,导致转换后损耗了一些,设置壁纸后,某些对比度比较高的壁纸就显示的模糊!修改方案:默认修改为采用png格式转换!android6.0之前的版本,请做如下修改:定位到/packages/apps/Launcher3/的WallpaperCropActivity.java文件1、String mOutputFormat = "jpg";//修改为"png"2、 protected static String getFileExtension(String requestFormat) { String outputFormat = (requestFormat == null) ? "jpg"//修改为"png" : requestFormat; outputFormat = outputFormat.toLowerCase(); return (outputFormat.equals("png") || outputFormat.equals("gif")) ? "png" // We don't support gif compression. : "jpg"; }android6.0的版本,请做如下修改:定位到/packages/apps/Launcher3/WallpaperPicker/src/com/android/gallery3d/common/BitmapCropTask.java文件if (crop.compress(CompressFormat.JPEG, DEFAULT_COMPRESS_QUALITY, tmpOut)) 修改为:if (crop.compress(CompressFormat.PNG, DEFAULT_COMPRESS_QUALITY, tmpOut))
9.6.0平台上Launcher3自带的壁纸路径是什么?
在6.0中,平台版本预置了一些壁纸资源,相关路径如下:资源文件在:packages/apps/Launcher3/WallpaperPicker/res/drawable-xhdpi/字串文件在:packages/apps/Launcher3/WallpaperPicker/res/values-nodpi/wallpapers.xml
1 0
- Android Launcher3一些默认修改
- Android Launcher3一些默认修改
- launcher3 修改默认桌面布局
- android Launcher3 设置默认桌面应用
- Android Launcher3源码分析与修改
- android Launcher3应用列表修改透明背景
- Android Launcher3的自定义修改总结
- Android Launcher3 修改双层桌面为单层
- android framework的一些默认配置修改
- Android Launcher 一些默认修改(一)
- android studio 导入 Launcher3 的一些问题
- 如果更改android 4.4.4上的launcher3默认布局
- Android 去掉 Launcher3 里面默认的Google搜索条
- Android launcher3 -- launcher3源码1
- Android launcher3 -- launcher3源码2
- Android launcher3 -- launcher3源码3
- android launcher3修改内置的系统图标显示
- Android Launcher3修改应用图标,隐藏应用图标
- 颜色判断是否相等
- 如何使用github上传项目
- windows下安装rabbitmq的php扩展rabmitmq
- axis-1.4生成webService客户端
- nil/Nil/NULL/NSNull的来历
- Android Launcher3一些默认修改
- 数组去重
- 程序设计中为什么要解耦?
- JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
- 内核rbtree使用示例
- EditText 当设置为action为搜索的时候,设置点击了搜索以后直接搜索的逻辑
- 什么方面的资料是玩家的需求点和喜欢看的游戏攻略
- php魔术方法(一)
- SWUSTOJ2475 字典树