亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android Studio的天氣預(yù)報(bào)APP設(shè)計(jì)與實(shí)現(xiàn)

        2017-12-22 07:35:40作者周明韜湖南省衡東縣第一中學(xué)
        電子制作 2017年21期
        關(guān)鍵詞:天氣預(yù)報(bào)控件布局

        作者/周明韜,湖南省衡東縣第一中學(xué)

        基于Android Studio的天氣預(yù)報(bào)APP設(shè)計(jì)與實(shí)現(xiàn)

        作者/周明韜,湖南省衡東縣第一中學(xué)

        隨著移動(dòng)互聯(lián)網(wǎng)的興起及Android機(jī)的普及,智能手機(jī)已經(jīng)成為人們?nèi)粘I钪斜乇瓤缮俚墓ぞ?。尤其國產(chǎn)Android手機(jī)的發(fā)展快速迅猛,相比于蘋果手機(jī)有價(jià)格上的優(yōu)勢,故市場潛力巨大。目前,手機(jī)的功能已經(jīng)不僅僅是打電話發(fā)短信,更多的是為我們的生活生產(chǎn)提供便利條件。以往人們不太方便獲取的信息,通過手機(jī)上網(wǎng)可以實(shí)時(shí)獲取。比如以往人們獲取天氣預(yù)報(bào)的方式多為收看電視節(jié)目或收聽廣播,而智能手機(jī)的出現(xiàn)可以通過網(wǎng)絡(luò)更快更方便地獲取天氣信息?;谝陨显?,本項(xiàng)目制作了一款界面簡潔,操作簡單的Android端天氣預(yù)報(bào)應(yīng)用。

        Android;天氣預(yù)報(bào);APP開發(fā);XML數(shù)據(jù)傳輸;Layout布局

        引言

        天氣預(yù)報(bào)已經(jīng)成為人們生活不可缺少的一部分,隨著技術(shù)、需求、生活水平的發(fā)展,天氣信息已經(jīng)成為一個(gè)需要實(shí)時(shí)獲取的消息。在這樣的市場需求的基礎(chǔ)上,本人根據(jù)用戶需求設(shè)計(jì)出了具有查詢當(dāng)日天氣、溫度、風(fēng)力、污染情況、其他城市天氣情況等功能的天氣預(yù)報(bào)APP?;贏ndroid Studio開發(fā),臺(tái)利用HttpClient獲取網(wǎng)絡(luò)得到天氣數(shù)據(jù),通過XML解析得到的溫度、濕度、風(fēng)力等具體值更新今日天氣UI界面數(shù)據(jù),從數(shù)據(jù)庫中讀取城市列表,通過ListView展示城市列表,搜索城市等。

        1.需求分析

        天氣預(yù)報(bào)是人們?nèi)粘I罱?jīng)常關(guān)注的話題,隨著智能手機(jī)以及移動(dòng)互聯(lián)網(wǎng)的發(fā)展,天氣預(yù)報(bào)已經(jīng)可以從每天一獲取變成每小時(shí)一獲取,甚至實(shí)時(shí)獲取。在手機(jī)上使用移動(dòng)網(wǎng)絡(luò)時(shí)時(shí)獲取天氣預(yù)報(bào)可以為人們出行做必要準(zhǔn)備。

        ■1.1 功能需求分析

        (1)對(duì)于天氣預(yù)報(bào)這種應(yīng)用,使用時(shí)段應(yīng)該為碎片化時(shí)間,使用時(shí)長應(yīng)該盡量短,使用難度應(yīng)該盡量簡單。

        (2)定位當(dāng)前位置,自動(dòng)更新用戶所在城市的天氣信息,也可以查詢不同城市的天氣信息。

        (3)查詢信息要包括:溫度、濕度、風(fēng)力、PM2.5。

        (4)預(yù)測未來幾天的天氣情況并展示。

        ■1.2 界面需求

        扁平化的設(shè)計(jì)風(fēng)格,畫面簡潔明了,查詢天氣等重要功能放置首頁,天氣信息采用文字和圖案結(jié)合的方式,陰晴用圖標(biāo)代替,溫度等重要信息相對(duì)于風(fēng)力、濕度要更加明顯。

        2.系統(tǒng)總體設(shè)計(jì)

        ■2.1 功能設(shè)計(jì)

        軟件是基于Android平臺(tái)開發(fā)的,主要有四大模塊:

        (1)城市管理模塊:提供國內(nèi)城市的列表,用戶可根據(jù)首字母檢索、選擇。

        (2)天氣管理模塊:用戶可以查詢當(dāng)日的天氣信息和未來七日天氣信息,包括時(shí)、地點(diǎn)、氣溫、濕度、污染情況等。

        (3)地理位置模塊:定位用戶當(dāng)前城市位置,并顯示相應(yīng)天氣。

        (4)設(shè)置模塊:包括用戶個(gè)人偏好,分享天氣信息,關(guān)于本軟件等。

        ■2.2 UI布局

        Layout 是一類特殊的控件,其本身并不顯示詳細(xì)內(nèi)容,主要用途是為了控制其子控件的布局。例如LinearLayout(線性布局),可將子控件按垂直或水平方向按順序排列下去;Tablelayout(表格布局),可以將子控件像表格一樣,一個(gè)個(gè)放置好;Relative—layout(相對(duì)布局)更靈活,可以設(shè)定各個(gè)控件之間的對(duì)齊和排列關(guān)系,適合定制復(fù)雜的界面。布局控件還可以嵌套使用,構(gòu)建出更復(fù)雜美觀的界面。

        這里采用嵌套布局的方式,放置一個(gè)線性布局,采用垂直方式分布,分別放置今日天氣、7日天氣信息以及廣告信息,并指定背景圖片,代碼如下。

        android:id=”@+id/weather_today”

        android:layout_width=”f i ll_parent”

        android:layout_height=”wrap_content”

        android:padding=”10.0dip”>

        常用控件有:TextView,Button,Toast, ImageView等,其中TextView是用于在界面上顯示一段文字信息,代碼如下。layout_width與layout_height分別指定控件的寬度和高度(所有控件通用),match_parent:控件大小與父布局一致,f i ll_parent:API level 8以后被match_parent取代,wrap_content:控件大小剛好包含里面的內(nèi)容,大小由內(nèi)容決定, text:指定控件文本,gravity:指定控件內(nèi)文字的對(duì)齊方式,可以用“|”指定多個(gè)值,textColor:指定文字的顏色,textSize:指定文字的大小,id:為控件設(shè)置一個(gè)id(非必須)。

        android:id=”@+id/city”

        android:layout_width=”wrap_content”

        android:layout_height=”wrap_content”

        android:layout_alignParentLeft=”true”

        android:layout_alignParentTop=”true”

        android:layout_marginLeft=”15.0dip”

        android:singleLine=”true”

        android:text=”北京”

        android:textSize=”40.0sp” />

        3.系統(tǒng)實(shí)現(xiàn)

        ■3.1 通過HTTP協(xié)議訪問數(shù)據(jù)

        獲取網(wǎng)絡(luò)數(shù)據(jù)的方式有三種:WebView控件、HttpURLConnection、HttpClient。 其 中,HttpClient相比傳統(tǒng)JDK自帶的URLConnection更加靈活和易用。它不僅使客戶端發(fā)送Http請(qǐng)求變得相對(duì)容易,而且也為開發(fā)人員測試基于Http的接口提供方便,提高開發(fā)的效率,從而提高代碼的魯棒性[1]。

        HttpClient的使用方法:作為一個(gè)接口,HttpClient在使用中需要首先進(jìn)行實(shí)例化,因此第一步是要?jiǎng)?chuàng)建一個(gè)DefaultHttpClient實(shí)例;根據(jù)要發(fā)送的請(qǐng)求是GET請(qǐng)求或POST請(qǐng)求,創(chuàng)建一個(gè)HttpGet對(duì)象或HttpPost對(duì)象;以POST請(qǐng)求為例,通過HttpPost的SetEntity()方法傳入構(gòu)造好的UrlEncodedFormEntity;然后使用HttpClient對(duì)象的execute()方法向服務(wù)器發(fā)送請(qǐng)求;再獲取該方法返回的HttpResponse對(duì)象的HttpEntity對(duì)象,可使用HttpResponse的getEntity()方法獲?。涣硗?,可以通過HttpResponse的getStatusLine().getStatusCode()方法獲取返回狀態(tài)碼,來確定是否成功,200代表成功。

        ■3.2 解析網(wǎng)絡(luò)數(shù)據(jù)

        在網(wǎng)絡(luò)上傳輸數(shù)據(jù)時(shí)最常用的格式有兩種:XML和JSON,均是通用數(shù)據(jù)交換格式.。JSON的主要優(yōu)勢是體積小。解析XML文件數(shù)據(jù):在Android平臺(tái)上可以使用Simple API for XML(SAX) 、Document Object Model(DOM和Android附帶的Pull解析器解析XML文件[2]。我們使用pull解析器,Pull解析器的使用:讀取到xml的聲明返回 START_DOCUMENT;讀取到xml的結(jié)束返回 END_DOCUMENT;讀取到xml的開始標(biāo)簽返回 START_TAG;讀取到xml的結(jié)束標(biāo)簽返回 END_TAG[3]。代碼如下:

        XmlPullParserFactoryfac = XmlPullParserFactory newI nstance();

        XmlPullParserxpParser = fac.newPullParser();

        xpParser.setInput(new StringReader(xmldata));

        inteType = xpParser.getEventType();

        //不斷讀取元素

        while (eType != XmlPullParser.END_DOCUMENT) {

        switch (eType) {

        // 當(dāng)讀到文檔開始標(biāo)簽的時(shí)候

        case XmlPullParser.START_DOCUMENT:

        break;

        // 當(dāng)讀到標(biāo)簽元素開始標(biāo)簽的時(shí)候

        case XmlPullParser.START_TAG:

        if (xpParser.getName().equals(“city”)) {

        eType = xpParser.next();

        Log.d(“mWeatherLog”, “city: “+xpParser getText());

        }

        ……

        // 當(dāng)讀到標(biāo)簽元素結(jié)束標(biāo)簽的時(shí)候

        case XmlPullParser.END_TAG:

        break;

        }

        // 繼續(xù)讀取下一個(gè)元素

        eType = xpParser.next();

        }

        ■3.3 SQLite數(shù)據(jù)庫設(shè)計(jì)

        Android系統(tǒng)中內(nèi)置的數(shù)據(jù)庫為SQLite,一種輕量級(jí)關(guān)系型數(shù)據(jù)庫,占用資源小,大概只需幾百K內(nèi)存,特別適合在嵌入式系統(tǒng)中使用,支持標(biāo)準(zhǔn)的SQL語法,支持事務(wù)機(jī)制,SQLiteOpenHelper類是Android專門為開發(fā)者提供的用于對(duì)SQLite數(shù)據(jù)庫進(jìn)行操作的類[4]。利用SQLiteDatabase對(duì)象可以對(duì)數(shù)據(jù)庫進(jìn)行CRUD操作。類中的公共函數(shù):insert()、delete()、 update()、 query()。封裝了執(zhí)行的添加、刪除、更新和查詢功能的SQL命令。

        本軟件的城市數(shù)據(jù)庫設(shè)計(jì)如圖3.1主要包括:城市id,省份,城市名(區(qū)名),編碼,拼音,首字母,縮寫字母。為后續(xù)查找城市功能的實(shí)現(xiàn)。

        圖1 city數(shù)據(jù)庫設(shè)計(jì)

        ■3.4 Android中的多線程

        作為一款操作系統(tǒng),必須支持多線程操作,在Android系統(tǒng)中,主線程和子線程分別有不同的作用,這樣分工明確有利于系統(tǒng)分配硬件資源,提高系統(tǒng)性能。其中,主線程(MainThread)主要負(fù)責(zé)處理與UI相關(guān)的事件,例如:KeyPressed事件,ScreenTouched事件,Draw事件等。主線程把這些和UI相關(guān)的事件分發(fā)到相對(duì)應(yīng)的組件中進(jìn)行處理。所以主線程通常也被叫做UI線程。子線程主要負(fù)責(zé)除UI相關(guān)事件之外的事件,通常這些事件耗時(shí)較長,例如聯(lián)網(wǎng)下載數(shù)據(jù),訪問數(shù)據(jù)庫查找數(shù)據(jù)等[5]。代碼如下:

        //為主線程增加Handler:

        mHandler = new Handler() {

        @Override

        public void handleMessage(Message msg) {

        switch (msg.what) {

        case 0:

        labelTimer.setText(“已經(jīng)過 “ + msg.obj + “ 秒”);

        } } };

        //在子線程的循環(huán)體中增加如下語句:

        Message msg = new Message();

        msg.obj = timer;

        msg.what = 0;

        mHandler.sendMessage(msg);

        4.測試

        一個(gè)系統(tǒng)或應(yīng)用從開始開發(fā)到最終發(fā)布要經(jīng)過大量的測試,測試可以幫助程序員找出開發(fā)中的疏漏,幫助產(chǎn)品經(jīng)理發(fā)現(xiàn)用戶體驗(yàn)提升的空間,對(duì)于發(fā)布一款產(chǎn)品來說非常重要。本程序是基于AndroidStudio平臺(tái)開發(fā)的應(yīng)用,在編寫完成程序之后,選擇AndroidStudio主界面上的Run菜單,然后在下拉菜單中選中RunApp項(xiàng),即可開始測試項(xiàng)目[6]。此外,我們將文件打包成.apk文件傳輸?shù)绞謾C(jī)并完成安裝和運(yùn)行,測試結(jié)果如圖2。

        圖2 測試用例圖

        5.結(jié)論

        綜上所述天氣預(yù)報(bào)系統(tǒng)所有預(yù)期功能都完整地實(shí)現(xiàn),并且達(dá)到了預(yù)期的運(yùn)行效果。Android平臺(tái)的兼容性和開放性極強(qiáng),本文講述了開發(fā)思路并具體實(shí)現(xiàn)了在安卓平臺(tái)上開發(fā)一款查看實(shí)時(shí)和未來天氣的天氣預(yù)報(bào)軟件,在實(shí)際的測試中成功運(yùn)行Android平臺(tái)正在不斷的發(fā)展,我們需要在日后的工作中不斷探索和實(shí)踐,以建立更實(shí)用的天氣預(yù)報(bào)軟件。

        當(dāng)然,本軟件還有很多功能可以改進(jìn)和創(chuàng)新,大多數(shù)天氣預(yù)報(bào)app只注重顯示天氣的功能,沒有對(duì)用戶的數(shù)據(jù)進(jìn)一步分析利用,未來可以對(duì)用戶每日天氣情況、位置進(jìn)行收集,增加更加人性的功能。如:一周的天氣情況,通過折線圖等方式形象的展示出來;評(píng)選出最佳天氣周,在天氣好得時(shí)候推送旅游線路;用戶界面也可以隨著天氣情況來改變,污染嚴(yán)重的時(shí)候是黑色,天氣好得時(shí)候是藍(lán)色等。使用戶交互更加友好,這也是我日后需要不斷完善的方向。

        * [1] Burnette Ed著,張波,高朝勤,楊選等譯.Android 基礎(chǔ)教程[M].人民郵電出版社,2009.

        * [2] 張利國,代聞,龔海平編著.Android 移動(dòng)開發(fā)案例詳解[M].人民郵電出版社,2010.

        * [3] 劉平.Android 手機(jī)訪問服務(wù)器的一種數(shù)據(jù)交互方法[J].電子設(shè)計(jì)工程,2010.18(9).

        * [4] 王向輝,張國印,陳潔.Android 應(yīng)用程序開發(fā)[M].清華大學(xué)出版社,2010.

        * [5]Xia-huaMeng,Ye-xiangOu.A Solution for Application Transpl antation from J2ME to Android[J].2010 Intemational Conferen ce on Future Information Technology and Management Engin eering,2010,10:60-63.

        * [6] 楊苗. 基于安卓手機(jī)平臺(tái)的移動(dòng)旅游信息系統(tǒng)的設(shè)計(jì)與開發(fā)[D]. 長沙:湖南大學(xué)碩士學(xué)位論文, 2013.

        猜你喜歡
        天氣預(yù)報(bào)控件布局
        天氣預(yù)報(bào)員
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        天氣預(yù)報(bào)的前世今生
        BP的可再生能源布局
        能源(2017年5期)2017-07-06 09:25:57
        中期天氣預(yù)報(bào)
        VR布局
        2015 我們這樣布局在探索中尋找突破
        小小天氣預(yù)報(bào)員
        Face++:布局刷臉生態(tài)
        就這樣玩會(huì)VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        亚洲国产一二三精品无码| 亚洲精品美女久久久久99| 久久国产精品视频影院| 日韩人妻有码中文字幕| 国产成人自拍视频播放| 久久青青草原精品国产app| 国产性生大片免费观看性| 亚洲成人免费网址| 亚洲伊人免费综合网站| 中文字幕国产亚洲一区| 秘书边打电话边被躁bd视频| 久久婷婷综合色丁香五月| 日韩精品精品一区二区三区| 国产精品亚洲一区二区三区16| 日本强伦姧人妻一区二区| 人妻丰满av无码中文字幕| 秋霞鲁丝片av无码| 午夜一级在线| 亚洲最黄视频一区二区| 国产精品国产三级国产密月| 777亚洲精品乱码久久久久久| 亚洲aⅴ无码成人网站国产app| 日韩av中出在线免费播放网站| 国产精品一区二区三区黄片视频 | 免费二级毛片在线播放| 成人性生交大片免费看激情玛丽莎 | 伊人久久大香线蕉av一区| 亚洲熟妇AV一区二区三区宅男| 丰满人妻一区二区乱码中文电影网| 少妇人妻偷人中文字幕| 中文国产乱码在线人妻一区二区 | 久久国产亚洲精品超碰热| 视频在线播放观看免费| 精品无码av一区二区三区不卡| 欧洲vat一区二区三区| 色综合久久丁香婷婷| 少妇高潮太爽了免费网站| 男人国产av天堂www麻豆| 欧美性猛交内射兽交老熟妇| 久久亚洲aⅴ精品网站婷婷| 人妻少妇猛烈井进入中文字幕|