• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Android的新聞閱讀器設(shè)計(jì)與開發(fā)

      2018-06-06 10:14魏艷鳴
      電腦知識與技術(shù) 2018年7期

      魏艷鳴

      摘要:隨著Android智能手機(jī)平臺的廣泛應(yīng)用,在其平臺下開發(fā)的手機(jī)應(yīng)用程序大大的便利了人們的生活。該文利用聚合數(shù)據(jù)網(wǎng)提供的JSON新聞數(shù)據(jù),設(shè)計(jì)與開發(fā)了一款能查看不同類型的新聞閱讀器。

      關(guān)鍵詞:聚合數(shù)據(jù);OKHttp;JSON;ListView

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)07-0084-02

      1概述

      隨著網(wǎng)絡(luò)的快速發(fā)展和高性能手機(jī)的普及,微信、導(dǎo)航等手機(jī)應(yīng)用程序大大便利了人們的生活[1]。目前,手機(jī)應(yīng)用程序的開發(fā)平臺主要包括蘋果的IOS、Google的Android、微軟的Win7和諾基亞的Symbian等,其中,Android操作系統(tǒng)因其穩(wěn)定性、開源性、低成本等特點(diǎn),成為當(dāng)今社會(huì)主流的一款操作系統(tǒng),也是國內(nèi)用戶群最大的操作系統(tǒng)。本文的主要目的是設(shè)計(jì)與開發(fā)一款基于Android的新聞閱讀器App,用戶可以利用此App查看不同類型的新聞?lì)^條。

      2所用技術(shù)

      2.1數(shù)據(jù)來源

      聚合數(shù)據(jù)(www.juhe.cn)是一家數(shù)據(jù)銀行,提供30大類,100種以上的基礎(chǔ)數(shù)據(jù)API服務(wù),如天氣預(yù)報(bào)、手機(jī)號碼歸屬地、新聞?lì)^條等,是國內(nèi)最大的基礎(chǔ)數(shù)據(jù)API服務(wù)提供商之一。

      使用聚合數(shù)據(jù)API服務(wù)需先進(jìn)行注冊,注冊成功后,可以在“個(gè)人中心”à“我的數(shù)據(jù)”平臺下點(diǎn)擊“申請新數(shù)據(jù)”按鈕申請免費(fèi)數(shù)據(jù),但在獲取部分免費(fèi)數(shù)據(jù)時(shí)需要上傳身份證照片進(jìn)行實(shí)名認(rèn)證,認(rèn)證通過后,會(huì)獲取訪問的AppKEY,如圖1所示??梢允褂谩癶ttp://v.juhe.cn/toutiao/index?type=top&key;=APPKEY”訪問此網(wǎng)站API服務(wù)提供的數(shù)據(jù),其中type是新聞?lì)愋停≈祎op(頭條,默認(rèn))、shehui(社會(huì))、guonei(國內(nèi))、guoji(國際)等。

      2.2網(wǎng)絡(luò)連接與訪問

      Android中提供了一個(gè)用于訪問網(wǎng)絡(luò)的基礎(chǔ)類HttpURLConnection,但用此類訪問網(wǎng)絡(luò)數(shù)據(jù),代碼量較大,需要對獲取的數(shù)據(jù)進(jìn)行處理才能轉(zhuǎn)換為所需的字符串,因此在其基礎(chǔ)上又衍生了許多第三方庫,如OKHttp。OKHttp是一款高效的HTTP客戶端,具有以下優(yōu)勢:

      1) 支持連接同一地址的鏈接共享同一個(gè)socket;

      2) 通過連接池來減小響應(yīng)延遲;

      3) 無縫的支持GZIP來減少數(shù)據(jù)流量;

      4) 緩存響應(yīng)數(shù)據(jù)來減少重復(fù)的網(wǎng)絡(luò)請求等。

      在項(xiàng)目中使用OKHttp時(shí)需添加依賴,即在build.gradle文件中添加:

      compile 'com.squareup.okhttp3:okhttp:3.0.1'

      可以通過以下代碼完成對網(wǎng)絡(luò)的GET請求及訪問,其中String jsonData即為我們要獲取的網(wǎng)絡(luò)數(shù)據(jù)。

      OkHttpClient client = new OkHttpClient();

      Request request = new Request.Builder().get()

      .url(url).build();

      Response response = client.newCall(request).execute();

      if (response.isSuccessful()){

      String jsonData = response.body().string();

      }

      在此需要注意,由于Android4.0之后,訪問網(wǎng)絡(luò)的代碼只能放在子線程中,因此上面一段代碼需放置到一個(gè)線程中。

      2.3 數(shù)據(jù)解析

      本文從聚合數(shù)據(jù)網(wǎng)中獲取的新聞數(shù)據(jù)為JSON格式,其主要格式如下所示。

      {

      "reason": "成功的返回",

      "result": {

      "stat": "1",

      "data": [

      {

      "uniquekey": "6c4caa0c3ba6e05e2a272892af43c00e",

      "title": "發(fā)際線再也回不去了么?…",

      "date": "2017-01-05 11:03",

      "category": "yule",

      "author_name": "騰訊娛樂",

      "url": "http://mini.eastday.com/mobile/170105110355287.html?qid=juheshuju",

      "thumbnail_pic_s": "http://03.imgmini.eastday.com/mobile/20170105/20170105110355_

      806f4ed3fe71d04fa452783d6736a02b_1_mwpm_03200403.jpeg",…},

      ...]}}

      JSON是存儲和交換文本信息的語言,類似 XML,但JSON 比 XML 更小、更快,更易解析。其中“{}”表示對象,用“[]”表示數(shù)組,由這兩種數(shù)據(jù)嵌套可組成各種復(fù)雜數(shù)據(jù)。對JSON解析可以使第三方庫,如GSON,也可以使用Android中提供的最基礎(chǔ)的JSON解析工具,即JSONObject和JSONArray,本文使用后者。針對從聚合中獲取的JSON數(shù)據(jù),我們可以用以下代碼進(jìn)行解析,解析的數(shù)據(jù)封裝在List集合datas中,方便后期顯示在相應(yīng)控件里。

      private ArrayList parseJsonData(String jsonData){

      List datas = new ArrayList<>();

      try {

      JSONObject o1 = new JSONObject(jsonData);

      if (o1.getString("reason").equals("成功的返回")){

      JSONObject o2 = o1.getJSONObject("result");

      JSONArray array = o2.getJSONArray("data");

      for (int i = 0; i < array.length(); i++) {

      JSONObject o = array.getJSONObject(i);

      NewsInfo data = new NewsInfo();

      data.title = o.getString("title");

      data.date = o.getString("date");

      data.url = o.getString("url");

      data.thumbnail_pic_s = o.getString("thumbnail_pic_s");

      datas.add(data); }

      return (ArrayList) datas;

      }

      } catch (JSONException e) {

      e.printStackTrace();

      }

      return null;

      }

      2.4顯示數(shù)據(jù)

      新聞最終以列表的形式顯示在界面上,本文使用ListView控件[2]顯示新聞列表,當(dāng)數(shù)據(jù)過多時(shí)ListView會(huì)出現(xiàn)滾動(dòng)條,并且能夠根據(jù)數(shù)據(jù)的長度自適應(yīng)屏幕顯示。使用ListView控件時(shí)需要進(jìn)行數(shù)據(jù)適配,這樣才會(huì)在界面上顯示數(shù)據(jù),數(shù)據(jù)適配器就是數(shù)據(jù)與視圖之間的橋梁,本文使用繼承BaseAdapter的自定義數(shù)據(jù)適配器。此外,當(dāng)單擊新聞列表項(xiàng)時(shí),需要進(jìn)入新聞詳情界面,這就需要給ListView控件添加OnItemClickListener監(jiān)聽。

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

      在Android4.0以后規(guī)定,子線程不能修改主線程的UI界面,因此在MainActivity中,使用Handler消息機(jī)制完成不同線程之間的通信,最終完成系統(tǒng)顯示的界面,如圖2和圖3所示。

      4總結(jié)

      本文利用聚合網(wǎng)提供的JSON新聞數(shù)據(jù),開發(fā)了一款能查看不同類型的新聞閱讀器,通過OKHttp訪問網(wǎng)絡(luò),使用JSONObject和JSONArray解析數(shù)據(jù),最終把數(shù)據(jù)以列表的形式顯示到ListView控件中。

      參考文獻(xiàn):

      [1] 季光獻(xiàn).Android系統(tǒng)環(huán)境下應(yīng)用前景與開發(fā)研究[J].軟件,2011,32(10).

      [2] 謝景明.Android移動(dòng)開發(fā)基礎(chǔ)案例教程[M].北京:人民郵電出版社,2017:139-146.

      六枝特区| 尚志市| 兰坪| 新建县| 分宜县| 定远县| 开化县| 侯马市| 泗阳县| 平江县| 舟山市| 阳谷县| 甘泉县| 泰兴市| 保亭| 扎鲁特旗| 蚌埠市| 河津市| 弋阳县| 报价| 元江| 台中市| 吉安县| 原阳县| 镇平县| 东平县| 桓台县| 亚东县| 保定市| 深泽县| 阿尔山市| 平阳县| 鲁山县| 莱西市| 阿克陶县| 大方县| 连城县| 涞源县| 广水市| 铜川市| 含山县|