公司要定制自己的Launcher,于是对源代码里面的Launcher2做下修改。
最近需要将workspace每行只显示3个,于是修改了下workspace_screen.xml,将launcher:shortAxisCells="4"改为launcher:shortAxisCells="3",可是一直报错,数组越界了(源码编译出来的之所以没错,因为他就是4行4列,怎么都不会有错的啦)。
这个问题好debug,仔细一看,原来记录workspace里面cell状态的mOccupied[][]二维数组是4列3行,但是应该是3列4行才对。
找到mOccupied初始化的地方就发现问题了:
if (mOccupied == null) {
if (mPortrait) {
mOccupied = new boolean[mShortAxisCells][mLongAxisCells];
} else {
mOccupied = new boolean[mLongAxisCells][mShortAxisCells];
}
}
这里的mPortrait根本没有初始化!!!,只是在以后每次onMeasure里面给其赋值,但是没有初始化就默认到else里面执行了,这样就是默认Landscape即横屏方式的了,难怪。
改正很简单,在这句话上面先判断是横屏还是竖屏就行:
mPortrait = this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT;
注意,Portrait也就是竖屏的情况下应该是mOccupied[mShortAxisCells][mLongAxisCells],mShortAxisCells是比较短的那一方向的cell数(竖屏就是横着的方向),mLongAxisCells是比较长的那一方向的cell数(竖屏就是竖着的方向)。
分享到:
相关推荐
2. **Launcher的工作原理**:Launcher负责加载应用图标,处理用户的触摸事件,以及管理主屏幕上的小部件和快捷方式。它通过Binder机制与其他系统服务通信,获取应用信息和用户权限。 3. **编译Android源码**:要...
在这个"安卓Android源码——Launcher源码修改可编译.zip"文件中,你将有机会接触到Android系统的核心部分,并学习如何对源码进行编译和调试。 首先,Android源码分为几个主要部分,包括系统库、框架层、运行时环境...
Android 4.4 KitKat 的 Launcher3 是 Android 系统的核心组成部分之一,它负责桌面启动器的功能,包括图标布局、小部件、应用抽屉以及主屏幕管理等。Launcher3 的源代码提供了深入理解 Android 系统工作原理的机会,...
1. **Android 8.0 Launcher3**:原生的Android系统包含一个名为Launcher3的应用程序,它是用户与设备交互的主要界面,负责显示应用图标、小部件以及桌面布局等。Android 8.0 (API级别26)的Launcher3进行了许多改进,...
2. **界面定制**:修改布局和主题,以提供更个性化的用户体验,比如改变图标样式、调整网格大小或者添加自定义小部件。 3. **功能增强**:添加新的特性,如快捷手势操作、搜索栏的扩展功能、多任务管理等。 4. **...
基于谷歌官方Android-Pie的Launcher3源码进行修改,打造国内习惯的单层桌面,并添很多新的特性。 分支介绍: release分支:发布分支 feature分支:特性分支,主要是用来开发一些特性的,为不稳定版 develop分支:...
http://www.oschina.net/code/explore/android-2.2-froyo/com/android/launcher2/Workspace.java 但是,此类只能管理固定数目的屏幕,且不能循环滚动。 而且,目前网上搜到的众多修改方案,对滚动处理不够平滑:边界...
适用固件:Android4.0+ 更新时间:2015-01-04 软件大小:1023K 银河发射高仿三星的TouchWiz界面,特性: - 自定义的图标大小和图标文字大小 - 支持ADW图标包 - 自定义的桌面网格和网格抽屉 - 锁定,解锁桌面 - ...
1. **Launcher3**: Launcher3是Android操作系统中的默认主屏幕应用,负责展示应用图标、小部件和主屏幕。它由Google开发,提供了基本的桌面操作,如滑动、长按、添加和删除快捷方式等。Launcher3的核心功能包括多主...
然后将其拖拽其他item上面,使得GridView的item发生交换,比较典型的就是我们的Launcher,网上有很多关于GridView的拖动的Demo,但是大部分都是相同的,而且存在一些Bug,而且大部分都是点击GridView的item然后进行...
- **问题2(BUGID:12866)**:当用户从A切换到B用户后,程序页面仍保留前一用户的记录。在锁屏后再以另一用户登录,记事标签依然显示,而不是预期的全部标签,这可能导致数据混淆。 - **问题3(BUGID:12870)**:...
2. **Launcher**:Android的启动器是用户界面的重要组成部分,负责显示桌面图标和启动应用程序。修改Launcher源码可以改变桌面布局、动画效果、快捷方式行为等,以实现个性化启动器。 3. **Settings**:设置应用是...
【Magisk】launcher3quickstep.zip 是一个专为Android 9系统设计的Magisk模块,主要目的是优化和适配Launcher3快速启动功能。这个模块旨在提升Android设备的启动器性能和用户体验,尤其针对那些希望自定义或增强其...
Launcher3桌面去掉二级菜单改为单层_左右滑动模式_补丁_android_12
2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance Alliance Alliance Alliance 什么是开放手机联盟? 开放手机联盟, Open Handset Alliance :是美国 Google 公司与 2007 年 ...
Android桌面,也被称为Launcher,是系统提供给用户启动应用、管理屏幕快捷方式和小部件的主要界面。它由多个组件构成,包括LauncherActivity、WidgetProvider、壁纸服务等。拖拽效果主要涉及到触屏事件处理、视图...
4. **系统bug**:偶尔,Android系统的bug也可能导致App无法正常显示在最近应用列表中。此时,更新系统或者恢复出厂设置可能是解决办法。 解决这类问题的方法: - 检查`AndroidManifest.xml`中所有Activity的`...
<category android:name="android.intent.category.LAUNCHER" /> ``` 确保`android:name`属性的值与你的Activity完全匹配。 针对上述问题,开发者可以采取以下步骤来尝试解决问题: 1. **检查并修正错误**...
《Android框架浅谈》 **一、Android系统框架概览** Android系统框架是构建于Linux内核之上的,为移动设备提供了一套完整的操作系统环境。它由一系列的组件和服务构成,包括应用程序框架、运行库、应用程序、Linux...