Search events
来源:互联网 发布:网络摄像头ip扫描工具 编辑:程序博客网 时间:2024/06/05 22:45
Search events 在android中有两种方法:
1.通过屏幕上方的SearchDialog来交给系统的收搜框架来完成开启相关的activity;
2.通过布局SearchView来通过系统的收搜框架开启相关activity处理收搜事件
系统会创建一个intent并将用户输入的收搜信息储存在intent中,开启通过申明的处理search的activity(searchable activity),并将intent传递给它
search事件处理的方法:
- 1.创建searchable configuration 文件 res/xml/目录下创建searchable.xml文件
2.在manifest中配置处理search的activity(searchable Activity)
3.在 searchableActivity中处理search 事件
a.接受传入的search的条件(开启的查询intent中的用户输入的内容)
String str= getIntent().getStringExtra(SearchManager.QUERY)
b.查询数据(查询数据库)
c.先时查询结果(一般在listView中显示)- 4.创建search的接口(以上两种方法searchWidget或SearchDialog)
具体代码参考
创建SearchDialog接口的方法:
前面3个步骤都一样,需要在加上一个步骤
在需要跳出SearchDialog的activity的manifest中需配置SearchDialog的元数据(若其本身即是searchableActivity也是弹出SearchDialog的activity则无需配置default_searchable) <activity android:name=".MainActivity" android:label="MainActivity"> <meta-data android:name="android.app.default_searchable" android:value=".SearchableActivity"/> </activity> 配置SearchableActivity <activity android:label="ThirdActivity" android:name=".ThirdActivity" android:parentActivityName=".SecondActivity"> <meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".SecondActivity"/> <intent-filter> <action android:name="android.intent.action.SEARCH"/> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> </activity>然后在代码中点击某个按钮调用onSearchRequested();方法调出SearchDialog
activity失去输入焦点,不会对stack造成影响所以不会调用onPause()方法,需要在activity失去输入焦点时做出反应(如游戏暂停等),可以overrides onSearchRequested()方法
语音查询
点击语音按钮弹出下面的语音录入框
在searchable.xml配置文件中添加语音属性
<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:hint="@string/search_hint" android:icon="@drawable/icon1" android:voiceSearchMode="showVoiceSearchButton|launchRecognizer"> <!--showVoiceSearchButton显示语音图标,LauchRecognizer识别语音并自动跳转--></searchable>
提供搜索建议
- 1.最近查询记录建议
(1).创建searchableActivity,searchable.xml,search的接口如上述三个步骤
(2).创建一个ContentProvider继承于SearchRecentSuggestionsProvider并在manifest中声明
(3).在 Searchable.xml中增加suggestion相关属性
(4).当用户启动查询后将用户输入的查询类容保存到声明的ContentProvider中
(5).保护用户隐私,设置清除记录按钮
(当用户输入内容时,系统会自动query配置的contentProvider并返回query结果cursor并显示出来,当输入内容有变动时,系统会重复前面的动作,用户点击了某个suggestion项时,系统直接提交内容开启searchableActivity)
(2)创建最近查询记录的Provider并在manifest中声明public class MySuggestionProvider extends SearchRecentSuggestionsProvider { public static final String AUTHORITY = "com.example.wendy.notification.MySuggestionProvider"; public static final int MODE = DATABASE_MODE_QUERIES;//MODE是可以|运算的 public MySuggestionProvider() { setupSuggestions(AUTHORITY, MODE); }}(3).在searchable.xml中设置suggestion属性<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_name" android:hint="@string/search_hint" android:searchSuggestAuthority="com.example.wendy.notification.MySuggestionProvider" android:searchSuggestSelection=" ?">//“?”前面有一个空格</searchable>(4).将用户输入的搜索内容在searchableActivity中保存到新建的provider中 String content = getIntent().getStringExtra(SearchManager.QUERY);SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);suggestions.saveRecentQuery(content, null);//保存记录,null也可以图(2)中第二行的文字(5).允许用户清除最近查询记录SearchRecentSuggestions suggestions = new SearchRecentSuggestions(this,MySuggestionProvider.AUTHORITY, MySuggestionProvider.MODE);suggestions.clearHistory();//清除记录
- 2.自定义搜寻建议
以后再详细补充
官方文档查看链接
searchable.xml中属性的含义
阅读全文
0 0
- Search events
- EVENTS
- Events
- 17.7 Events
- JavaScript Events
- JAVAscipt Events
- body events
- Factory Events
- DOM Events
- DHTML Events
- LSL-- Events
- Weird Events
- UEFI Events
- qTip2 Events
- qTip2 Events
- PeopleCode Events
- PeopleCode Events
- Events适配器
- Redis jedis对数据类型的操作
- mybatis xml 映射文件 sql include 的用法
- input输入框 去掉外边框 解决方案
- ROS:在Qt Creator中打开catkin工程
- 碰到个蛋疼的mysql编码问题 记录一下
- Search events
- java基础:关于final关键字
- Linux ---指令详解 ,目录结构(史上最全圈 最详细的文章)
- Call分析(一)
- NDK学习笔记(2)——C与java之间的互相调用
- 网站建设的过程中什么最重要?
- AngularJS Directive 隔离 Scope 数据交互
- android 图片剪切在小米手机上为方形框在华为上为圆形框解决办法
- 未知大小的图片在div中水平垂直居中(拒绝使用table-cell)