1、获取LauncherAppState实例:
LauncherAppState app = LauncherAppState.getInstance();
LauncherAppState这个类主要做了些什么呢?
从这个类的构造方法中可以发现,做了些初始化的操作:
(1)初始化LauncherModel、IconCache、WidgetCache、InvariantDeviceProfile等。
(2)注册广播:
//手机环境变化比如语言横竖屏之类
filter.addAction(Intent.ACTION_LOCALE_CHANGED);
//搜索管理相关的变化
filter.addAction(SearchManager.INTENT_GLOBAL_SEARCH_ACTIVITY_CHANGED);
filter.addAction(SearchManager.INTENT_ACTION_SEARCHABLES_CHANGED);
// For handling managed profiles
filter.addAction(LauncherAppsCompat.ACTION_MANAGED_PROFILE_ADDED);
filter.addAction(LauncherAppsCompat.ACTION_MANAGED_PROFILE_REMOVED);
2、初始化DeviceProfile:
mDeviceProfile = getResources().getConfiguration().orientation
== Configuration.ORIENTATION_LANDSCAPE ?
app.getInvariantDeviceProfile().landscapeProfile
: app.getInvariantDeviceProfile().portraitProfile;
那么这个类主要做了些什么呢?
(1)定义了Launcher的很多属性,比如图标的大小、间距;
(2)可用间距发生改变时调用updateIconSize方法,重新计算更新图标大小:行列数是根据配置的行列数、图标大小、表格间距等计算出来的。如果想要改变行列数,可以适当的把图标缩小放大、间距加大或减小。
3、获取SharedPreferences实例
mSharedPrefs = getSharedPreferences(LauncherAppState.getSharedPreferencesKey(),Context.MODE_PRIVATE);
4、获取LauncherModel实例:
mModel = app.setLauncher(this);
LuancherModel是操作数据相关的类,保存了桌面运行的状态,加载桌面数据。
5、获取IconCache实例:
mIconCache = app.getIconCache();
这个类主要是保存图标信息,保存图标信息的方法是cacheLocked这个方法,可在此方法修改图标信息。
6、获取DragController实例:
mDragController = new DragController(this);
这是一个处理拖动图标的类,提供了一个内部接口:
public interface DragListener{
//拖动图标开始时执行的方法
void onDragStart(DragSource source, Object info, int dragAction);
//拖动图标结束时执行的方法
void onDragEnd();
}
7、获取AppWidgetManager实例,用来管理widget
mAppWid