搜索android
‘壹’ android studio 怎么进行全局搜索
android studio全局搜索的方法:
1、使用快捷键Ctrl + Shift + F来搜索
2、打开搜索框进行搜索
操作路径:Edit -> Find -> Findto open find search box.
‘贰’ android应用中的搜索功能怎么实现的
在APP应用中启用搜索
在app应用中,至少要执行如下的三个步骤,才能让app应用能够进行检索。如果要提供搜索建议,还需要执行第4步:
编写搜索配置的XML文件
编写搜索的activity类
在Android的manifest.xml文件中,对两面两个步骤的工作进行配置。
如果要使用搜索建议,则需要增加一个contentprovider。
配置搜索的XML配置文件
首先看下如何配置搜索的XML配置文件。先命名配置文件名称为searchable.xml,保存在res/xml文件夹中。然后需要设置搜索框的文本,并且应该增加一个hint的提示文本信息,如下代码所示:
<searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/search_label"> android:hint="@string/search_hint" </searchable>
关于搜索配置文件有很多的配置选项,建议参考Android的手册可以获得更多:
http://developer.android.com/guide/topics/search/searchable-config.html。
增加搜索的Activity
当用户进行搜索时,Android调用activity进行搜索,代码如下:
publicclass SampleSearchActivity extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleIntent(getIntent()); }public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); handleIntent(getIntent()); } public void onNewIntent(Intent intent) { setIntent(intent); handleIntent(intent); } public void onListItemClick(ListView l, View v, int position, long id) { // 点每个搜索结果时的处理代码 } private void handleIntent(Intent intent) { if (Intent.ACTION_SEARCH.equals(intent.getAction())) { String query = intent.getStringExtra(SearchManager.QUERY); doSearch(query); } } private void doSearch(String queryStr) { //执行真正的查询结果处理 } }
在上面的代码中,在handleIntent方法中,当按下搜索按钮,系统就会自动发送Intent,action是Intent.ACTION_SEARCH,然后通过intent.getStringExtra(SearchManager.QUERY);获得要搜索的字符串。
其中为什么要包含onNewIntent()方法呢?主要是因为Android的back后退机制。Android会默认把每一个新的activity放到activity栈的顶部。如果用户点了后退键,则会关闭栈顶部的activity。尝试考虑一种情况,用户搜索一个内容并且系统列出了结果,如果用户发现结果不是他所要的,或者希望重新检索,则会重新点击搜索按键,这样将会产生一个新的搜索activity的实例,在activity栈中就会有两个搜索的activity,这是开发者并不期待的,所以,需要将这个搜索的activity声明为singleTop类型的activity,这样的话,无论用户按返回键还是尽心个多次的搜索,在acitivty栈中始终保持的是一个搜索activity的实例。因为当activity被设置为singleTop的加载模式时,如果堆栈的顶部已经存在了该Activity,那么,它便不会重新创建,而是调用onNewIntent。如果,该Activity存在,但不是在顶部,那么该Activity依然要重新创建。
mainifest配置文件
接下来,需要对manifest配置文件进行配置,必须要对其中进行如下配置:
搜索的activity.
使用搜索的intent
activity启动模式
searchable.xml中的元数据
更多的定义搜索的元数据
下面是典型的一个搜索的配置
<application android:icon="@drawable/icon" android:label="@string/app_name" android:name=".YourApp" > <meta-data android:name="android.app.default_searchable" android:value=".YourSearchActivity" /> <activity android:label="@string/app_name" android:launchMode="singleTop" android:name=".YourSearchActivity" > <intent-filter > <action android:name="android.intent.action.SEARCH" /> </intent-filter> <intent-filter > <action android:name="android.intent.action.VIEW" /> </intent-filter> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable" /> </activity> </application>
在上面的典型配置中,要注意如下几点:
1)由于当调用搜索activity时,Android调用的是android.intent.action.SEARCH作为搜索的intent,所以必须在intent-filter中包含android.intent.action.SEARCH。
2)在<meta-data>中,指出了searchable.xml的位置
3)同样在<meta-data>中,通过:
<meta-data android:name="android.app.default_searchable" android:value=".YourSearchActivity" />
指出了当执行搜索的字符串提交时,将调用哪一个activity去进行处理。
‘叁’ 怎么使用android软件的搜索功能
当你需要在你的应用程序中提供搜索服务时,通过使用Android的搜索框架,应用程序将显示一个自定义搜索对话框来处理用户的搜索请求。通过一个简单的搜索按钮或从您的应用程序中调用API,搜索对话框就会显示在屏幕的顶部,并会自动显示应用程序图标。
本文将教你如何为你的应用程序提供一个自定义搜索对话框。这样做,给您的用户提供一个标准化的搜索体验,并能增加如语音搜索和搜索建议等功能。
基础知识
Android的搜索框架将代您管理的搜索对话框,您不需要自己去开发一个搜索框,不需要担心要把搜索框放什么位置,也不需要担心搜索框影响您当前的界面。所有的这些工作都由SearchManager类来为您处理(以下简称“搜索管理器”),它管理的Android搜索对话框的整个生命周期,并执行您的应用程序将发送的搜索请求,返回相应的搜索关键字。
当用户执行一个搜索,搜索管理器将使用一个专门的Intent把搜索查询的关键字传给您在配置文件中配置的处理搜索结果的Activity。从本质上讲,所有你需要的就是一个Activity来接收Intent,然后执行搜索,并给出结果。具体来说,你需要的做的事就包括以下内容:
一个搜索配置
我们用个XML配置文件来对搜索对话框进行配置,包括一些功能的配置,如文本框,设置语音搜索和搜索建议中显示的提示文字等。
一个用来处理搜索请求的Activity
这个Activity用来接收搜索查询的内容,然后搜索您的数据并显示搜索结果。
一种用户执行搜索的途径
默认情况下,一旦你配置了一个可搜索的Activity,设备搜索键(如果有)将调用搜索对话框。然而,你应该始终提供另一种手段,让用户可以调用搜索对话框,如在选项菜单中的搜索按钮或其他用户界面上的按钮,因为不是所有的设备提供一个专门的搜索键。
创建一个搜索对话框配置文件
搜索框配置文件是一个用来配置您的应用程序中搜索框的设置的XML文件,这个文件一般命名为searchable.xml,并且必须保存在项目的res/xml/目录下。
配置文件的根节点必须为,可以有一个或多个属性。
‘肆’ 如何使用Android的搜索框架
当你需要在你的应用程序中提供搜索服务时,通过使用Android的搜索框架,应用程序将显示一个自定义搜索对话框来处理用户的搜索请求。通过一个简单的搜索按钮或从您的应用程序中调用API,搜索对话框就会显示在屏幕的顶部,并会自动显示应用程序图标。
本文将教你如何为你的应用程序提供一个自定义搜索对话框。这样做,给您的用户提供一个标准化的搜索体验,并能增加如语音搜索和搜索建议等功能。
基础知识
Android的搜索框架将代您管理的搜索对话框,您不需要自己去开发一个搜索框,不需要担心要把搜索框放什么位置,也不需要担心搜索框影响您当前的界面。所有的这些工作都由SearchManager类来为您处理(以下简称“搜索管理器”),它管理的Android搜索对话框的整个生命周期,并执行您的应用程序将发送的搜索请求,返回相应的搜索关键字。
当用户执行一个搜索,搜索管理器将使用一个专门的Intent把搜索查询的关键字传给您在配置文件中配置的处理搜索结果的Activity。从本质上讲,所有你需要的就是一个Activity来接收Intent,然后执行搜索,并给出结果。具体来说,你需要的做的事就包括以下内容:
一个搜索配置
我们用个XML配置文件来对搜索对话框进行配置,包括一些功能的配置,如文本框,设置语音搜索和搜索建议中显示的提示文字等。
一个用来处理搜索请求的Activity
这个Activity用来接收搜索查询的内容,然后搜索您的数据并显示搜索结果。
一种用户执行搜索的途径
默认情况下,一旦你配置了一个可搜索的Activity,设备搜索键(如果有)将调用搜索对话框。然而,你应该始终提供另一种手段,让用户可以调用搜索对话框,如在选项菜单中的搜索按钮或其他用户界面上的按钮,因为不是所有的设备提供一个专门的搜索键。
创建一个搜索对话框配置文件
搜索框配置文件是一个用来配置您的应用程序中搜索框的设置的XML文件,这个文件一般命名为searchable.xml,并且必须保存在项目的res/xml/目录下。
配置文件的根节点必须为,可以有一个或多个属性。如下所示:
[html] view
plainprint?
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/searchLabel" android:hint="@string/searchHint">
</searchable>
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/searchLabel" android:hint="@string/searchHint">
</searchable>
上面的配置文件中,除android:hint属性外,其它都是一个搜索对话框必须的配置项,android:label是一个必须的属性,它的值为一个string资源引用,不能直接用字符串,通常会是应用程序的名称(尽管它是一个必须的属性,但通常情况下是不显示出来的,除非你开启了搜索建议功能)。android:hint是配置搜索框的输入提示信息,也必须引用string.xml中配置的字符串资源,不能直接使用字符串。
可以配置很多的属性,但大部分属性都只是在使用搜索建议和语音搜索时进行配置,尽管如此,我们建议你一定要配置android:hint,用于提示用户需要输入的信息。
接下来,你需要把这个配置文件放到你的应用程序中。
创建一个可用于搜索的Activity
当用户从一个搜索框执行搜索时,搜索管理器(Search
Manager)会通过ACTION_SEARCH Intent
把要搜索的内容(关键字)发送到一个可执行搜索的Activity。这个Acitivity查询数据并显示结果。
定义一个可搜索的Activity
如果你还没有准备好,那么就创建一个用来执行搜索的Activity,声明它可以响应ACTION_SEARCH
Intent ,并且增加搜索框配置信息。为此,你需要添加一个元素和一个元素在你的manifest文件中的节点。如下所示:
[html] view
plainprint?
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
...
</application>
中的android:name属性值必须为”android.app.searchable”,android:resource属性值必须引用上面提到的res/xml/目录下的搜索配置文件(本例中的res/xml/searchable.xml)。
请注意,只有配置了上面的meta-data节点的Activity的节点才能执行搜索,如果想在整个应用程序中都可以调用搜索框,可以进行如下配置:
[html] view
plainprint?
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".AnotherActivity" ... >
</activity>
<!—这个配置就可以让你在整个应用程序中调用搜索框 -->
<meta-data android:name="android.app.default_searchable"
android:value=".MySearchableActivity" />
...
</application>
<application ... >
<activity android:name=".MySearchableActivity" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".AnotherActivity" ... >
</activity>
<!—这个配置就可以让你在整个应用程序中调用搜索框 -->
<meta-data android:name="android.app.default_searchable"
android:value=".MySearchableActivity" />
...
</application>
上面代码中android:name=”android.app.default_searchable”
定义一个响应搜索框搜索请求的名称,android:value指定是由哪个Activity响应并执行搜索。当我们在应用程序中的
OtherAcitivity中执行搜索请求时,MySearchableActivity将会被加载用于执行搜索并显示搜索结果。
执行一个搜索
当一个Activity声明为可搜索时,执行实际的搜索包括三个步骤:接收查询,检索你的数据,并提交结果。
通常情况下,你的搜索结果需要在一个ListView中展现,所以你用于执行搜索的Acitivity要继承ListActivity,这样,可以方便的访问ListView的Api。
接收搜索查询
当从搜索对话框执行搜索时,刚才配置的可用于搜索的Acitivity将会被Intent激活,同时带着一些搜索相关的参数,你需要检查Intent并做出搜索响应,如下所示:
[java] view
plainprint?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);Intent intent = getIntent();
//判断是否是搜索请求
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
//获取搜索的查询内容(关键字)
String query = intent.getStringExtra(SearchManager.QUERY);
//执行相应的查询动作
doMySearch(query);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
Intent intent = getIntent();
//判断是否是搜索请求
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
//获取搜索的查询内容(关键字)
String query = intent.getStringExtra(SearchManager.QUERY);
//执行相应的查询动作
doMySearch(query);
}
}
doMySearch()方法将根据关键字查询数据库,或从网络上查询数据,如果是耗时的搜索,你还需要使用进度条,来告诉用户搜索正在进行,最后返回结果后,可以调用ListView的setAdapter()方法将结果显示在ListView中。
调用搜索对话框
你可以从应用程序中的任何一个地方调用onSearchRequested()方法激活搜索框,比如从菜单中或者一个按钮等。你也要以在
onCreate()方法中调用setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL),这样,当用户按下键盘上的按键时,将会自动激活搜索框。
搜索框和普通对话框一样,浮动在屏幕的最上方,它不会改变任何Activity堆栈状态,没有任何Activity生命周期中的方法会被调用,只是当搜索框出现就,正在运行的Activity会失去输入焦点。
如果你要在执行搜索时,进行别的操作,可以重写onSearchRequested()方法,如下所示:
[java] view
plainprint?
@Override
public boolean onSearchRequested() {
//这个方法中干你想干的事,比如做一些被始化工作
pauseSomeStuff();
return super.onSearchRequested();
}
@Override
public boolean onSearchRequested() {
//这个方法中干你想干的事,比如做一些被始化工作
pauseSomeStuff();
return super.onSearchRequested();
}
如果当前的Activity就是响应搜索请求的Activity时,会有以下两种情况:
默认情况下,ACTION_SEARCH
Intent将会创建一个新的Activity,并调用onCreate()方法,这个新的Activity会显示在最前面,你将同时有两个
Activity实例。当你按“返回”键里,会回到没有执行搜索前的一个Activity。
另一种情况是配置了android:launchMode=”singleTop”的Activity,这时,我们需要在
onNewIntent(Intent)方法中处理搜索请求,如下所示:
[java] view
plainprint?
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
handleIntent(getIntent());
}@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search);
handleIntent(getIntent());
}
@Override
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
doMySearch(query);
}
}
相应的Activity配置如下
[html] view
plainprint?
<activity android:name=".MySearchableActivity"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".MySearchableActivity"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
如何给搜索框增加参数
要给搜索框传递参数,我们需要重写onSearchRequested()方法,如下所示:
[java] view
plainprint?
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putBoolean(MySearchableActivity.JARGON, true);
startSearch(null, false, appData, false);
return true;
}
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putBoolean(MySearchableActivity.JARGON, true);
startSearch(null, false, appData, false);
return true;
}
我们的Activity在收到搜索框的搜索请求时,通过如下方法获取参数:
[java] view
plainprint?
Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
boolean jargon = appData.getBoolean(MySearchableActivity.JARGON);
}
Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
boolean jargon = appData.getBoolean(MySearchableActivity.JARGON);
}
最后我们来看看如何使用android的语音搜索:
只需要对我们的搜索配置文件做如下改动,你的搜索就支持语音搜索了,配置文件如下所示:
[html] view
plainprint?
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/searchLabel"
android:hint="@string/searchHint"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer">
</searchable>
‘伍’ Android开源实战:手把手带你实现一个简单好用的搜索框(含历史搜索记录)
一款 封装了 历史搜索记录功能 & 样式 的 Android 自定义搜索框
根据场景,梳理出来的功能业务流程图如下:
根据功能的业务流程图,得出功能需求如下
下面,将根据功能需求给出特定的技术解决方案
下面将给出详细的功能逻辑
分析1:EditText_Clear.java
对于含有一键清空功能 & 更多自定义样式的EditText自定义控件 具体请看我的另外一个简单 & 好用的开源组件: Android自定义EditText:手把手教你做一款含一键删除&自定义样式的SuperEditText
分析2:SearchListView.java
分析3: search_layout.xml
分析4:ICallBack.java、bCallBack.java
分析5:SearchView.java
分析1:RccordSQLiteOpenHelper.java
分析2:SearchView.java
不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。
‘陆’ 安卓怎么实现关键字搜索
很多app都可使用关键字搜索手机短信内容,如QQ通讯录、来电通等等。
这些app主要功能有:
1、启动QQ讯录后,默认即进入联系人页面。可以上下拖动来浏览,拖动时会显示姓名首字母便于用户查QQ通讯录界面找,同时也可以直接点击右侧的字母栏来快速定位。点击联系人后会进入操作选择界面,用户可以发送Q信、语音对讲、拨打电话或是发送普通短信。如果对方还不是用户的Q信好友,则会提示用户邀请对方使用Q信。
2、在联系人界面,点击左上的"联系人/Q信好友"可以在普通联系人和Q信好友间进行切换。在联系人界面点击右上角的"同步通讯录"按钮,可以在线备份或恢复手机通讯录。这样用户即便更换手机或手机丢失也没关系,只要新手机还是这几大智能平台,就可以跨平台恢复通讯录了。
‘柒’ android开发文档怎么搜索
当装好SDK过后,在其安装目录下会有一个docs文件夹,打开该文件夹,可以找到一个index.html文件,点击打开。
此时浏览器上出现一个网页,即为文档的首页面。如果电脑在联网状态的话,打开比较缓慢。打开后我们可以在浏览器中添加书签收藏,方便以后阅读。
当我们查询时,一般使用的是Develop选项下的各子选项。
首先,Develop下的Training页面是整个Android开发的一个教程,国内很多开发书籍都是根据其写的。如果英语比较好,看这个官方教程足以学习Android开发了。
API
Guides中讲解了关于Android的所有知识,引导开发者学习其特性。
6
Reference里是Android开发中可能用到的所有包和方法,需要用到某个方法却不理解其机制时,可以到相应的包中找,然后阅读其介绍。若是不清楚具体在哪个包中,可以直接在右侧搜索框中输入相关信息然后搜索。