在workspace类中
addInScreen方法中为子窗口添加长按监听
public void setOnLongClickListener(OnLongClickListener l) {
mLongClickListener = l;
//1
final int count = getChildCount();
for (int i = 0; i < count; i++) {
getChildAt(i).setOnLongClickListener(l);
}
}
为每个cell(屏幕)都添加长按监听
public void computeScroll() {
//TODO 推屏
在这个方法里用来确定Launcher
在Launcher类中的内部类CreateShortcut里的createDialog方法里调用AddAdapter类
AddAdapter里面加载了当你在屏幕上长按的时候跳出的东西
而在Launcher的内部类PreviewTouchHandler里onCreateDialog(是父类的方法)调用的CreateShortcut里的createDialog
这样可能大致的流程就出来了~~~
下面就是Launcher类里CreateShortcut类中的onClick()方法
当你创建了这个dialog后就会出现4个东西(AddAdapter类里定义的)
当点击任意的一项就会出发onClick()方法
使用case判断
case AddAdapter.ITEM_LIVE_FOLDER: {
当到这里的时候~~~使用Intent和Bundle还有ArrayList来传值
最后startActivityForResult(pickIntent, REQUEST_PICK_LIVE_FOLDER);
其实到这里就是问题了因为所有下级的加载工作都是在这里完成的但是这里只是加载了
新建文件夹根本就没有蓝牙的指示????很郁闷先向下看
我就直接查询REQUEST_PICK_LIVE_FOLDER到底是哪里调用了?
在Luncher里的onActivityResult方法里用case判断
向下addLiveFolder(data);
在这里取得文件名和快捷方式名用来判断
真就是调用startActivityForResult(intent, REQUEST_CREATE_LIVE_FOLDER);
要是否就调用 addFolder();
OK看addFolder里面涉及到的类UserFolderInfo-->FolderInfo-->ItemInfo(其实后面还有调用的LauncherSettings)
里面的值是从LauncherModel(查询数据库)里的的getFolderById方法里得到的
基本上的流程就是这样的
在捋顺一遍
在>>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
启动后加载Launcher/workspace/db等等的一些东西~~
在屏幕上长按~~调用onLongClick方法~~加载4个东西
当点击文件夹时自动添加一个新建文件夹,然后将这个值(intent)传走,放入一个东西里(是item/Arraylist/adapter?没整明白但是看dialog是Adapter),
在后面调用数据库得到所有的符合条件的数据,和上面一样放入一个东西里呵呵最后在dialog里显示出来。
不知道是不是应该这个顺序