• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于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钪斜乇瓤缮俚墓ぞ?。尤其?guó)產(chǎn)Android手機(jī)的發(fā)展快速迅猛,相比于蘋(píng)果手機(jī)有價(jià)格上的優(yōu)勢(shì),故市場(chǎng)潛力巨大。目前,手機(jī)的功能已經(jīng)不僅僅是打電話發(fā)短信,更多的是為我們的生活生產(chǎn)提供便利條件。以往人們不太方便獲取的信息,通過(guò)手機(jī)上網(wǎng)可以實(shí)時(shí)獲取。比如以往人們獲取天氣預(yù)報(bào)的方式多為收看電視節(jié)目或收聽(tīng)廣播,而智能手機(jī)的出現(xiàn)可以通過(guò)網(wǎng)絡(luò)更快更方便地獲取天氣信息。基于以上原因,本項(xiàng)目制作了一款界面簡(jiǎn)潔,操作簡(jiǎn)單的Android端天氣預(yù)報(bào)應(yīng)用。

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

    引言

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

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

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

    (4)預(yù)測(cè)未來(lái)幾天的天氣情況并展示。

    ■1.2 界面需求

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

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

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

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

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

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

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

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

    ■2.2 UI布局

    Layout 是一類(lèi)特殊的控件,其本身并不顯示詳細(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 通過(guò)HTTP協(xié)議訪問(wèn)數(shù)據(jù)

    獲取網(wǎng)絡(luò)數(shù)據(jù)的方式有三種:WebView控件、HttpURLConnection、HttpClient。 其 中,HttpClient相比傳統(tǒng)JDK自帶的URLConnection更加靈活和易用。它不僅使客戶(hù)端發(fā)送Http請(qǐng)求變得相對(duì)容易,而且也為開(kāi)發(fā)人員測(cè)試基于Http的接口提供方便,提高開(kāi)發(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)求為例,通過(guò)HttpPost的SetEntity()方法傳入構(gòu)造好的UrlEncodedFormEntity;然后使用HttpClient對(duì)象的execute()方法向服務(wù)器發(fā)送請(qǐng)求;再獲取該方法返回的HttpResponse對(duì)象的HttpEntity對(duì)象,可使用HttpResponse的getEntity()方法獲取;另外,可以通過(guò)HttpResponse的getStatusLine().getStatusCode()方法獲取返回狀態(tài)碼,來(lái)確定是否成功,200代表成功。

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

    在網(wǎng)絡(luò)上傳輸數(shù)據(jù)時(shí)最常用的格式有兩種:XML和JSON,均是通用數(shù)據(jù)交換格式.。JSON的主要優(yōu)勢(shì)是體積小。解析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的開(kāi)始標(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)讀到文檔開(kāi)始標(biāo)簽的時(shí)候

    case XmlPullParser.START_DOCUMENT:

    break;

    // 當(dāng)讀到標(biāo)簽元素開(kāi)始標(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ù)庫(kù)設(shè)計(jì)

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

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

    圖1 city數(shù)據(jù)庫(kù)設(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í)較長(zhǎng),例如聯(lián)網(wǎng)下載數(shù)據(jù),訪問(wèn)數(shù)據(jù)庫(kù)查找數(shù)據(jù)等[5]。代碼如下:

    //為主線程增加Handler:

    mHandler = new Handler() {

    @Override

    public void handleMessage(Message msg) {

    switch (msg.what) {

    case 0:

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

    } } };

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

    Message msg = new Message();

    msg.obj = timer;

    msg.what = 0;

    mHandler.sendMessage(msg);

    4.測(cè)試

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

    圖2 測(cè)試用例圖

    5.結(jié)論

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

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

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

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

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

    * [4] 王向輝,張國(guó)印,陳潔.Android 應(yīng)用程序開(kāi)發(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ì)與開(kāi)發(fā)[D]. 長(zhǎng)沙:湖南大學(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中常見(jiàn)的自定義控件
    電腦迷(2012年24期)2012-04-29 00:44:03
    德钦县| 隆林| 彩票| 宜城市| 襄汾县| 广河县| 巴南区| 韩城市| 甘孜县| 铁力市| 澄迈县| 玛沁县| 兴国县| 怀安县| 宜兰市| 兴隆县| 九龙县| 溧水县| 吕梁市| 河东区| 靖州| 盘山县| 五常市| 乐平市| 河源市| 垫江县| 兰西县| 黄龙县| 宜川县| 无为县| 兖州市| 灵璧县| 泾源县| 瓮安县| 大渡口区| 志丹县| 庐江县| 青神县| 涡阳县| 若尔盖县| 城口县|