freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

畢業(yè)論文-基于android平臺的天氣軟件開發(fā)-在線瀏覽

2025-03-02 17:22本頁面
  

【正文】 序中至少需要設置兩張表cities和city, 表cities用于存放全國所有城市名稱和獲取天氣數據所對應的城市碼,所以應該有兩個字段存儲它們,表city用于存放默認城市的代碼,所以只有一個字段。首先來介紹一下Android程序的系統(tǒng)目錄:src目錄是java文件的存放目錄;res目錄是資源文件存放的目錄,其中,drawable文件夾中存放圖片,layout文件夾中存放的是布局文件,values文件夾存放的是字符串文件,程序中顯示的字符串信息都在這里設置。這個文件是系統(tǒng)自動生成的,最好不要隨意修改。每一個Activity代表著一個界面,它有自己的生命周期,即它的一個產生、運行、銷毀的一個周期,對于Activity,關鍵是其生命周期的把握,其次就是狀態(tài)的保護和恢復。這里的布局類似于HTML中 CSS + DIV的設計模式,通過設置控件的屬性改變控件的位置和顯示效果,容易實現和調試。Intent負責對應用中一次操作的動作、動作涉及到的數據、附加數據進行描述,Android則根據此Intent的描述,負責找到對應的組件,將Intent傳遞給調用的組件,并完成組件的調用。Intent主要是用來啟動其他Activity或者Service,所以可以將Intent理解成Activity之間的粘合劑。 Service Service也是Android系統(tǒng)中一種很重要的組件,它跟Activity的級別差不多,但是它不能自己運行,只能后臺運行,并且可以和其他組件進行交互。Service是一種程序,它可以運行很長時間,但是它卻沒有用戶界面。 SQLiteSQLite數據庫是Android平臺內嵌的數據庫,它是一個輕型的關系型數據,提供完整的對關系型數據庫的操作,對SQLite的操作和其他關系型數據庫類似,這里簡要介紹一下。接下來就可以進行需要的操作了,不同的是,SQLite 的命令在前面都需要加上一個點,比如查看數據庫中的表:. schema,查看表中所有數據:. select * from table。這里需要指出的是,在SQLite數據庫的每張表中必須有一個字段是類似于 _id 的整型值,設置為主鍵,可自動插入,也可手動添加。 布局及控件介紹Android系統(tǒng)中界面布局方式有很多種,有線性布局、相對布局、表格布局等,布局文件以xml文件的形式存放在系統(tǒng)的資源文件夾中,這里只詳細介紹程序中大量用到的線性布局。在布局當中添加的是控件,下面是對一些常用控件的簡單介紹:TextView:文本顯示域,顯示的信息內容為字符串形式;ImageView:圖片顯示域,顯示的內容為圖片;Button:按鈕,可以設置響應的監(jiān)聽器,執(zhí)行某種操作;EditText:輸入文本框,為用戶提供輸入數據的接口;控件中的屬性有很多,大體上是類似的,也有個別屬性是特有的,這里不再詳細介紹,在用到的時候可以查閱相關文檔。 城市碼獲取軟件中用到的天氣數據來自于中國氣象局,這個數據源是免費的,它提供了全國2564個縣級以上城市的天氣信息,每一個城市對應一個城市碼。獲取城市及其城市碼的地址是,然后跟上省份編號得到地區(qū)編號,再用省份編號+地區(qū)編號就可以得到這個地區(qū)中所有城市的編號,最后把省份編號+地區(qū)編號+城市編號得到的就是城市對應的城市碼,通過鏈接 。這個程序通過遍歷來得到所有的城市信息。遍歷全部數據后,把結果保存起來。下載函數如下: public static String getInfo(String url) { BufferedReader in = null。 try { URL file。 in = new BufferedReader(new InputStreamReader(()))。 while ((line = ()) != null) { info = info + line。 } catch (Exception e) { ()。 }每次得到的下載內容包含的是一組數據,這組數據包含很多小組數據,每小組數據用一個“,”分割,在每小組數據中有城市名和城市編號,它們之間又用一個“|”分割,對這組內容進行解析后得到一個包含城市名和城市編號的二維數組,解析函數如下: public static String[][] parseCity(String content){ if(content!=null amp。 ().length()!=0){ StringTokenizer st = new StringTokenizer(content, ,)。 String[][] citys = new String[count][2]。 int index = 0。 index = (39。)。 citys[i][1] = (index + 1)。 } return citys。 }上面介紹的是下載函數和解析函數。遍歷函數代碼如下: public void doIt() { int init = 0。 String urlPre = 。 // 得到省份或一級直轄市代碼 [代碼][名稱] webContent = (urlPre + .xml)。 String[] groups = new String[]。 String[][] cityCode = new String[][]。 i 。 // 由省份碼得到城市碼的URL + 01 +.xml StringBuffer urlBuilder = new StringBuffer(urlPre)。 (.xml)。 // 一個省份內的城市信息 String[][] citys = (webContent)。 // 計算總的城鎮(zhèn)數 int sum = 0。 j 。 (citys[j][0])。 // 得到地方信息 webContent = (())。 sum = sum + towns[j].length。 cityCode[i] = new String[sum]。 for (int j = 0。 j++) { // town[j].length 是一個省份內有多少個城市信息 for (int n = 0。 n++) { childs[i][sum] = towns[j][n][1]。 (towns[j][n][0])。 webContent = (())。 cityCode[i][sum] = code[0][1]。 } } init = init + sum。 } (中國一共有多少個地方: + init)。 StringBuffer str = new StringBuffer()。 j 。 k childs[j].length。 (childs[j][k] + ,)。 g++。 try { ((), file)。 } g = 0。 (g2 ==== + g)。 j 。 i cityCode[j].length。 (cityCode[j][i])。 } ()。 try { ((), file2)。 } }遍歷后將得到的數據分別存放在 和 。寫入函數如下: public static boolean writeTxtFile(String content, File fileName) throws Exception { RandomAccessFile mm = null。 FileOutputStream o = null。 ((UTF8))。 flag = true。 } finally { if (mm != null) { ()。 }這樣,整個數據的獲取就完成了,得到的城市名和城市碼分別保存在 和 兩個文件中。首先來實現cities這張表,也就是將上面獲取數據后得到的兩個文件中的內容存儲到這張表中來。在前面已經說過,在兩個文件存儲的時候,城市名和城市名之間、城市碼和城市碼之間用“,”作為間隔,所以讀入后,應以它作為分隔符來進行解析,解析函數如下: public static String[] parseCity(String content){ if(content!=null amp。 ().length()!=0){ StringTokenizer st = new StringTokenizer(content, ,)。 int i = 0。 it[i] = city。 } return it。 }將兩個文件分別解析后,得到的是兩個字符串數組,這里需要注意的是,兩個數組中的城市名和城市碼之間是一一對應的。 for (int i = 0。 i++) { str[i][0] = code[i]。 } return str。在SQLite中對數據庫操作要首先獲得一個 SQLiteOpenHelper 對象,但是這個類是一個抽象類,需要創(chuàng)建一個類去實現它,然后繼承它的方法,這里給出一個簡單的實現類:public class DatabaseHelper extends SQLiteOpenHelper { private static final int VERSION = 1。 } public DatabaseHelper(Context context, String name, int version){ this(context, name, null, version)。 } public void onCreate(SQLiteDatabase db) { } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}繼承后要實現的有 onCreate 和 onUpgrade 兩個方法。這里介紹兩個方法: getReadableDatabase 和getWritableDatabase ,由字面意思我們就可以理解他們的含義:獲得一個可讀的數據庫和獲得一個可寫的數據庫。所以,要創(chuàng)建一個數據庫的時候直接調用它們即可,代碼如下: class CreateDatabaseListener implements OnClickListener { public void onClick(View arg0) { DatabaseHelper dbHelper = new DatabaseHelper(, panda_weather)。 } }創(chuàng)建的過程是在一個監(jiān)聽器里實現的,這里不再過多介紹。接下來是插入數據。 SQLiteDatabase db = ()。 String d2 = 。 i 。 d2 = str[i][1]。 ()。 } catch (Exception e) { ()。 ()。 }}當控制臺顯示最后一句話的時候,就表示所有數據插入成功了,一共2564條數據。詳細過程不再描述,只給出執(zhí)行語句: (create table city(_id int, code varchar(10))。10101010039。到這里,整個數據庫就創(chuàng)建完成了。接下來檢驗數據庫創(chuàng)建是否成功,把虛擬設備運行起來,進入到命令行提示符下,輸入 adb shell 命令,進入到Android操作系統(tǒng)中,通過 cd 命令進入到存放數據庫的目錄,輸入命令 sqlite3 panda_weather 后,進入到數據庫模式下,然后輸入 .schema 命令,查看數據庫中是否包含 cityes 和 city 兩張表,再用 select * from cities。 兩條命令查看表中的記錄是否正確。 數據庫操作數據庫創(chuàng)建成功后,就投入到具體的使用了。代碼如下:public class Database_Tools { // 當前上下文 private Context _context。 } private String dbPath = data/data/。 // 數據庫名稱 /** * 把數據庫文件復制到指定目錄 */ public void init() { try { String DATABASE = dbPath + dbName。 // 如果目錄已經存在,則返回 if (()) { return。 // 如果數據庫文件不存在,執(zhí)行復制數據庫文件 if (!(new File(DATABASE).exists())) { // 獲得封裝 文件的InputStream對象 InputStream is = ().open(panda_weather)。 // 下面這一段代碼不是很理解,有待研究 byte[] buffer = new byte[8192]。 // 開始復制db文件 while ((count = (buffer)) 0) { (buffer, 0, count)。 ()。 } } /** * 由城市名得到對應的城市碼 * param city
點擊復制文檔內容
教學教案相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1