一款 封裝了 歷史搜索記錄功能 樣式 的 Android 自定義搜索框

成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括清鎮(zhèn)網(wǎng)站建設(shè)、清鎮(zhèn)網(wǎng)站制作、清鎮(zhèn)網(wǎng)頁制作以及清鎮(zhèn)網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,清鎮(zhèn)網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到清鎮(zhèn)省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
根據(jù)場景,梳理出來的功能業(yè)務(wù)流程圖如下:
根據(jù)功能的業(yè)務(wù)流程圖,得出功能需求如下
下面,將根據(jù)功能需求給出特定的技術(shù)解決方案
下面將給出詳細(xì)的功能邏輯
分析1:EditText_Clear.java
對于含有一鍵清空功能 更多自定義樣式的EditText自定義控件 具體請看我的另外一個(gè)簡單 好用的開源組件: Android自定義EditText:手把手教你做一款含一鍵刪除自定義樣式的SuperEditText
分析2:SearchListView.java
分析3: search_layout.xml
分析4:ICallBack.java、bCallBack.java
分析5:SearchView.java
分析1:RccordSQLiteOpenHelper.java
分析2:SearchView.java
不定期分享關(guān)于 安卓開發(fā) 的干貨,追求 短、平、快 ,但 卻不缺深度 。
在APP應(yīng)用中啟用搜索
在app應(yīng)用中,至少要執(zhí)行如下的三個(gè)步驟,才能讓app應(yīng)用能夠進(jìn)行檢索。如果要提供搜索建議,還需要執(zhí)行第4步:
編寫搜索配置的XML文件
編寫搜索的activity類
在Android的manifest.xml文件中,對兩面兩個(gè)步驟的工作進(jìn)行配置。
如果要使用搜索建議,則需要增加一個(gè)contentprovider。
配置搜索的XML配置文件
首先看下如何配置搜索的XML配置文件。先命名配置文件名稱為searchable.xml,保存在res/xml文件夾中。然后需要設(shè)置搜索框的文本,并且應(yīng)該增加一個(gè)hint的提示文本信息,如下代碼所示:
searchable xmlns:android="" android:label="@string/search_label" android:hint="@string/search_hint" /searchable
關(guān)于搜索配置文件有很多的配置選項(xiàng),建議參考Android的手冊可以獲得更多:
。
增加搜索的Activity
當(dāng)用戶進(jìn)行搜索時(shí),Android調(diào)用activity進(jìn)行搜索,代碼如下:
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) { // 點(diǎn)每個(gè)搜索結(jié)果時(shí)的處理代碼 } 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) { //執(zhí)行真正的查詢結(jié)果處理 } }
在上面的代碼中,在handleIntent方法中,當(dāng)按下搜索按鈕,系統(tǒng)就會(huì)自動(dòng)發(fā)送Intent,action是Intent.ACTION_SEARCH,然后通過intent.getStringExtra(SearchManager.QUERY);獲得要搜索的字符串。
其中為什么要包含onNewIntent()方法呢?主要是因?yàn)锳ndroid的back后退機(jī)制。Android會(huì)默認(rèn)把每一個(gè)新的activity放到activity棧的頂部。如果用戶點(diǎn)了后退鍵,則會(huì)關(guān)閉棧頂部的activity。嘗試考慮一種情況,用戶搜索一個(gè)內(nèi)容并且系統(tǒng)列出了結(jié)果,如果用戶發(fā)現(xiàn)結(jié)果不是他所要的,或者希望重新檢索,則會(huì)重新點(diǎn)擊搜索按鍵,這樣將會(huì)產(chǎn)生一個(gè)新的搜索activity的實(shí)例,在activity棧中就會(huì)有兩個(gè)搜索的activity,這是開發(fā)者并不期待的,所以,需要將這個(gè)搜索的activity聲明為singleTop類型的activity,這樣的話,無論用戶按返回鍵還是盡心個(gè)多次的搜索,在acitivty棧中始終保持的是一個(gè)搜索activity的實(shí)例。因?yàn)楫?dāng)activity被設(shè)置為singleTop的加載模式時(shí),如果堆棧的頂部已經(jīng)存在了該Activity,那么,它便不會(huì)重新創(chuàng)建,而是調(diào)用onNewIntent。如果,該Activity存在,但不是在頂部,那么該Activity依然要重新創(chuàng)建。
mainifest配置文件
接下來,需要對manifest配置文件進(jìn)行配置,必須要對其中進(jìn)行如下配置:
搜索的activity.
使用搜索的intent
activity啟動(dòng)模式
searchable.xml中的元數(shù)據(jù)
更多的定義搜索的元數(shù)據(jù)
下面是典型的一個(gè)搜索的配置
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
在上面的典型配置中,要注意如下幾點(diǎn):
1)由于當(dāng)調(diào)用搜索activity時(shí),Android調(diào)用的是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" /
指出了當(dāng)執(zhí)行搜索的字符串提交時(shí),將調(diào)用哪一個(gè)activity去進(jìn)行處理。
當(dāng)你需要在你的應(yīng)用程序中提供搜索服務(wù)時(shí),通過使用Android的搜索框架,應(yīng)用程序?qū)@示一個(gè)自定義搜索對話框來處理用戶的搜索請求。通過一個(gè)簡單的搜索按鈕或從您的應(yīng)用程序中調(diào)用API,搜索對話框就會(huì)顯示在屏幕的頂部,并會(huì)自動(dòng)顯示應(yīng)用程序圖標(biāo)。
本文將教你如何為你的應(yīng)用程序提供一個(gè)自定義搜索對話框。這樣做,給您的用戶提供一個(gè)標(biāo)準(zhǔn)化的搜索體驗(yàn),并能增加如語音搜索和搜索建議等功能。
基礎(chǔ)知識
Android的搜索框架將代您管理的搜索對話框,您不需要自己去開發(fā)一個(gè)搜索框,不需要擔(dān)心要把搜索框放什么位置,也不需要擔(dān)心搜索框影響您當(dāng)前的界面。所有的這些工作都由SearchManager類來為您處理(以下簡稱“搜索管理器”),它管理的Android搜索對話框的整個(gè)生命周期,并執(zhí)行您的應(yīng)用程序?qū)l(fā)送的搜索請求,返回相應(yīng)的搜索關(guān)鍵字。
當(dāng)用戶執(zhí)行一個(gè)搜索,搜索管理器將使用一個(gè)專門的Intent把搜索查詢的關(guān)鍵字傳給您在配置文件中配置的處理搜索結(jié)果的Activity。從本質(zhì)上講,所有你需要的就是一個(gè)Activity來接收Intent,然后執(zhí)行搜索,并給出結(jié)果。具體來說,你需要的做的事就包括以下內(nèi)容:
一個(gè)搜索配置
我們用個(gè)XML配置文件來對搜索對話框進(jìn)行配置,包括一些功能的配置,如文本框,設(shè)置語音搜索和搜索建議中顯示的提示文字等。
一個(gè)用來處理搜索請求的Activity
這個(gè)Activity用來接收搜索查詢的內(nèi)容,然后搜索您的數(shù)據(jù)并顯示搜索結(jié)果。
一種用戶執(zhí)行搜索的途徑
默認(rèn)情況下,一旦你配置了一個(gè)可搜索的Activity,設(shè)備搜索鍵(如果有)將調(diào)用搜索對話框。然而,你應(yīng)該始終提供另一種手段,讓用戶可以調(diào)用搜索對話框,如在選項(xiàng)菜單中的搜索按鈕或其他用戶界面上的按鈕,因?yàn)椴皇撬械脑O(shè)備提供一個(gè)專門的搜索鍵。
創(chuàng)建一個(gè)搜索對話框配置文件
搜索框配置文件是一個(gè)用來配置您的應(yīng)用程序中搜索框的設(shè)置的XML文件,這個(gè)文件一般命名為searchable.xml,并且必須保存在項(xiàng)目的res/xml/目錄下。
配置文件的根節(jié)點(diǎn)必須為,可以有一個(gè)或多個(gè)屬性。
當(dāng)前名稱:搜索android,搜索的拼音
瀏覽地址:http://chinadenli.net/article19/dsijsdh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、虛擬主機(jī)、網(wǎng)站營銷、企業(yè)網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)