Launcher.java源码分析

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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值