zoukankan      html  css  js  c++  java
  • 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
    }
    }
    2.public class LauncherProvider extends ContentProvider{//定义ContentProvider
    •    private static class DatabaseHelper extends SQLiteOpenHelper {//内部定义DatabaseHelper
    }
    }
     
     
    1.  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
    Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);//Pick an activity given an intent, returning the class selected
    pickIntent.putExtra(Intent.EXTRA_INTENT, new Intent(Intent.ACTION_CREATE_SHORTCUT));//加入EXTRA_INTENT
    • AddAdapter.ITEM_APPWIDGET//打开所有widget的dialog
    pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetId);
    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
    Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
    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 item
    menu.add(0, MENU_WALLPAPER_SETTINGS, 0, R.string.menu_wallpaper)
    .setIcon(android.R.drawable.ic_menu_gallery)
    .setAlphabeticShortcut('W');//wallpaper item add
    menu.add(0, MENU_SEARCH, 0, R.string.menu_search).setIcon(
    android.R.drawable.ic_search_category_default)
    .setAlphabeticShortcut(SearchManager.MENU_KEY);//search item add
    menu.add(0, MENU_NOTIFICATIONS, 0, R.string.menu_notifications)
    .setIcon(com.android.internal.R.drawable.ic_menu_notifications)
    .setAlphabeticShortcut('N');//notification item add
    final 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 add 
     
    search分析
    1. 启动Broswer去search你的内容可用以下代码:
    Intent intent = new Intent(Intent.ACTION_SEARCH);// action search
    intent.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中去
  • 相关阅读:
    JavaScript ECMAScript 2015 (ES6) 和 ECMAScript 2016 (ES7) 新特性速查
    Sass中文文档
    TypeScript手册中文版
    敏捷:什么是用户故事(User Story)
    Repeater为空时显示“暂无数据”,很方便实用方法
    jquery之css()改变字体大小,颜色,背景色
    七牛 在线管理 v0.1
    clion idea jetbrain windows下搞c/c++
    amazeui 搜索 动态
    命令行启动软件
  • 原文地址:https://www.cnblogs.com/greywolf/p/2831162.html
Copyright © 2011-2022 走看看