launcher 类分析
1.class LauncherSetting{//定义数据的类
static final class Favorites implements BaseColumns {//一般通过内部类来实现BaseColumns
-
- URI定义
- static final Uri CONTENT_URI = Uri.parse("content://" + LauncherProvider.AUTHORITY + "/" + LauncherProvider.TABLE_FAVORITES + "?" + LauncherProvider.PARAMETER_NOTIFY + "=true");
- 数据库中item项的定义
- static final String ID = "_id";//定义ID
- static final String TITLE = "title";//定义title
- URI定义
}
}
2.public class LauncherProvider extends ContentProvider{//定义ContentProvider
- private static class DatabaseHelper extends SQLiteOpenHelper {//内部定义DatabaseHelper
}
}
- function:
Displays the shortcut creation dialog and launches, if necessary, the
appropriate activity
通过一个AddAdpter加入到一个list中,创建menu中ADD的功能:
1.创建dialog
mAdapter = new AddAdapter(Launcher.this);
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setAdatper(mAddapter,this);
AlertDialog dialog = builder.create(); dialog.setOnCancelListener(this);
2.创建dialog的监听 主要监听以下动作:
- AddAdapter.ITEM_SHORTCUT
pickIntent.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));//加入EXTRA_INTENT
- AddAdapter.ITEM_APPWIDGET//打开所有widget的dialog
Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK);
ArrayList<AppWidgetProviderInfo> customInfo = new ArrayList<AppWidgetProviderInfo>();
pickIntent.putParcelableArrayListExtra(AppWidgetManager.EXTRA_CUSTOM_INFO, customInfo);
通过上面四步就可以得到相应的widget dilaog
- AddAdapter.ITEM_LIVE_FOLDER//打开folder的dialog
pickIntent.putExtra(Intent.EXTRA_TITLE,getText(R.string.title_select_live_folder));
pickIntent.putExtra(Intent.EXTRA_INTENT, newIntent(LiveFolders.ACTION_CREATE_LIVE_FOLDER));
- AddAdapter.ITEM_WALLPAPER//打开wallppaper的选择器diaog
final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);//Action 为SET_wallpaper
startActivity(Intent.createChooser(pickWallpaper,getString(R.string.chooser_wallpaper)))选择器
launcher -->menu 的设计 以及相应的事件监听1.menu 的添加
menu.add(MENU_GROUP_ADD, MENU_ADD, 0, R.string.menu_add).setIcon(android.R.drawable.ic_menu_add).setAlphabeticShortcut('A');//Add itemmenu.add(0, MENU_WALLPAPER_SETTINGS, 0, R.string.menu_wallpaper).setIcon(android.R.drawable.ic_menu_gallery).setAlphabeticShortcut('W');//wallpaper item addmenu.add(0, MENU_SEARCH, 0, R.string.menu_search).setIcon(android.R.drawable.ic_search_category_default).setAlphabeticShortcut(SearchManager.MENU_KEY);//search item addmenu.add(0, MENU_NOTIFICATIONS, 0, R.string.menu_notifications).setIcon(com.android.internal.R.drawable.ic_menu_notifications).setAlphabeticShortcut('N');//notification item addfinal Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);menu.add(0, MENU_SETTINGS, 0,R.string.menu_settings).setIcon(android.R.drawable.ic_menu_preferences).setAlphabeticShortcut('P').setIntent(settings);//setting item addsearch分析
- 启动Broswer去search你的内容可用以下代码:
Intent intent = new Intent(Intent.ACTION_SEARCH);// action searchintent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.putExtra(SearchManager.QUERY, query);//query 为你要查询的东西startActivity(Intent);2.Launcher的search中用SimpleCursorAdapter来实现AutoCompleteTextView的自动匹配动作。
3.SimpleCursorAdapter是通过searchInfo来操作SearchRecentSuggestionsProvider的数据库,通过查询出来的curosr然后改变原来的cursor来布局到AutoCompleteTextView中去