編輯:關於Android編程
這部分是昨天學習的,但是因為眼睛超負荷所以拖到現在,以後要合理規劃時間。
目前手機裡面的號碼歸屬地查詢主要是通過兩種方式:1.聯網查詢,2.匹配本機歸屬地數據庫。
我認為兩種結合方式最好,在本地數據庫中匹配不到的在進行聯網查詢,能大大增加匹配效果,並且不用過於增加本地數據庫容量而增大安裝包大小。
步驟:1.開啟軟件的時候把數據庫從assets目錄拷貝到files目錄下,如果已存在,則不用重新拷貝。
2.實現界面。
3.實現工具類PhoneAddressUtils的getPhoneAddress()方法
4.在界面類activity裡調用工具類方法得到地址兵顯示出來。
首先是復制數據庫的操作:
private void copyDB() { File file = new File(getFilesDir(), "address.db"); if(file.exists()&&file.length()>0) { Toast.makeText(this, "已經復制數據庫", 0).show(); } else { try { AssetManager am = getAssets(); byte[] buffer = new byte[1024]; InputStream is = am.open("address.db"); FileOutputStream fis = new FileOutputStream(file); int len = 0; while((len=is.read(buffer))>0) { fis.write(buffer, 0, len); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
獲得assert目錄下的文件要用AssetManager對象的open()方法,打開文件返回輸入流。
實現界面:就一個簡單的輸入框,按鈕,顯示框就行。
工具類:
package com.itheima.mobilesafe.db.dao; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; public class AddressDao { private static String path = "data/data/com.itheima.mobilesafe/files/address.db"; public static String getAddress(String number) { String address = number; if(number.matches("^1[34568]\\d{9}$")) { String sql = "select location from data2 where id = (select outkey from data1 where id= ?)"; SQLiteDatabase database = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READONLY); Cursor cursor = database.rawQuery(sql, new String[] {number.substring(0, 7)}); while(cursor.moveToNext()) { address = cursor.getString(0); } cursor.close(); database.close(); } else { address = "不是手機號碼"; } return address; } }
調用顯示:
點擊按鈕時:
public void queryAddress(View view) { String number = et_phone.getText().toString(); String address = AddressDao.getAddress(number); et_address.setText(address); }但是我們要動態的顯示位置,所以要對輸入框加一個TextChangedListener,當輸入字符串大於3的時候,自動調用進行匹配顯示出來。
et_phone.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub if(s.length()>3) { String address = AddressDao.getAddress(s.toString()); et_address.setText(address); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } });
本文實例為大家分享了單行文本水平觸摸滑動效果,通過EditText實現TextView單行長文本水平滑動效果。下一篇再為大家介紹 多行文本折疊展開效果,自定義布局View
本文實例講述了android編程實現懸浮窗體的方法。分享給大家供大家參考,具體如下:突然對懸浮窗體感興趣,查資料做了個小Demo,效果是點擊按鈕後,關閉當前Activit
這倆天讀Google關於Android下Media開發的Sample,Media相關類庫結構復雜,時序難以理解,所以操起個人最喜歡的“看代碼”工具
ListView允許用戶通過手指上下滑動的方式將屏幕外的數據滾動到屏幕內,同時屏幕上原有的數據則會滾動出屏幕.1. ListView的簡單用法首先新建一個ListView