Android 实践:做一款新闻 APP

跟代码相关的工作,大多唯手熟尔,所以这里花了点时间做了款简易版的新闻 APP,虽然都是些基础的内容,不过还是可以加深自己对部分代码的理解。至少,可以加深自己的记忆


步骤


  1. 依赖库
  2. 网络请求
  3. 网络解析
  4. 界面布局
  5. 最后
  6. 运行界面
  7. 运行GIF
  8. 完整代码下载地址(github)

依赖库


过程中需要用到一些开源依赖库文件,先在 build.grade 中声明:

    compile 'com.google.code.gson:gson:2.8.0'       //网络解析compile 'com.squareup.okhttp3:okhttp:3.7.0'     //网络请求compile 'com.github.bumptech.glide:glide:3.8.0' //图片加载compile 'com.android.support:design:24.2.1'     //Material Design中用到的依赖库compile 'de.hdodenhof:circleimageview:2.1.0'    //显示圆形图片

网络请求


在包下创建一个文件夹 util 用来存放工具类,创建文件 HttpUtil.class 用来请求数据:

public class HttpUtil {public static void sendOkHttpRequest(String address, okhttp3.Callback callback){OkHttpClient client = new OkHttpClient();Request request = new Request.Builder().url(address).build();client.newCall(request).enqueue(callback);}
}

这里用到的是 okhttp3.Callback 的回调接口,结果会返回到 callback 的回调函数中,后面会进行处理


网络解析


我们先从数据解析开始,毕竟这才是这个小项目的重点。这次项目使用的数据来源是天行数据(http://www.tianapi.com/ )的新闻资讯 API ,先看 API 的说明:

新闻资讯 API

可以看到返回数据为 JSON, 默认返回 10 条参数。请求地址为:

这里写图片描述

其中, APIKEY 需要用个人的 API KEY 代替,可以在个人中心中看到,其他的请求地址也是大同小异

这里写图片描述

JSON 返回示例:

这里写图片描述

还有错误返回码,用来判断返回数据的异常情况:

这里写图片描述

根据 gson 的返回示例,我们可以写出对应的实体类文件,通过 gson 将返回数据转化为对应的类型。先创建一个 gson 文件夹存放实体类文件。

在 gson 文件夹下创建 New.class 文件:

public class News {@SerializedName("ctime")public String time;public String title;public String description;public String picUrl;public String url;}

创建 NewsList.class 文件:

public class NewsList {public int code;public String msg;@SerializedName("newslist")public List<News> newsList ;}

至此,我们就已经创建好了与返回数据对应的实体类。

在 util 文件夹下创建文件 Utility.class 文件:

public class Utility {public static NewsList parseJsonWithGson(final String requestText){Gson gson = new Gson();return gson.fromJson(requestText, NewsList.class);}}

将请求得到的数据解析为 NewList 实体类对象。现在网络请求和解析都准备好了,就开始界面文件了


界面布局


修改 values 目录下的 styles.xml 文件:

<resources><!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimary</item><item name="colorAccent">@color/colorAccent</item></style></resources>

修改通知栏颜色和标题栏颜色一样,是处于视觉统一的原因,也可以不修改(非必须)


主要采用的是 Material Design 的设计,整体布局采用的是滑动菜单,主界面内容为 ToolBar 和 ListView(这里为了方便,就直接使用),侧边栏内容为 NavigationView


主界面:
因为要用 ToolBar 替代 ActionBar, 我们先修改 values 下面的 styles 文件,修改主题为:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">

在layout 下创建 nav_header 文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="180dp"android:background="@color/colorPrimary"android:padding="10dp"><de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/icon_image"android:layout_width="80dp"android:layout_height="80dp"android:layout_centerInParent="true"android:src="@drawable/nav_icon" /><TextView
        android:id="@+id/username"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:text="https://github.com/lentitude"android:textColor="@color/color_White"android:textSize="14sp" /><TextView
        android:id="@+id/mail"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_above="@id/username"android:text="lentitude"android:textColor="@color/color_White"android:textSize="14sp" /></RelativeLayout>

这里在头部文件中放置了一个CircleImageView,两个 TextView,没有什么理解难度


在 res 目录下创建 menu 文件夹,新建 nav_menu.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><group android:checkableBehavior="single"><itemandroid:id="@+id/nav_society"android:title="社会新闻" /><itemandroid:id="@+id/nav_county"android:title="国内新闻" /><itemandroid:id="@+id/nav_internation"android:title="国际新闻" /><itemandroid:id="@+id/nav_fun"android:title="娱乐新闻" /><itemandroid:id="@+id/nav_sport"android:title="体育新闻" /><itemandroid:id="@+id/nav_nba"android:title="NBA新闻" /><itemandroid:id="@+id/nav_football"android:title="足球新闻" /><itemandroid:id="@+id/nav_technology"android:title="科技新闻" /><itemandroid:id="@+id/nav_work"android:title=

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64411.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【苹果iMessage相册推信息推】那些新功效理当可以或许压倒您。保护用户隐私是苹果的起点之一

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

iOS 推送手机消息背后的技术

作者&#xff1a;allenzzhao&#xff0c;腾讯 IEG运营开发工程师 消息推送我们几乎每天都会用到&#xff0c;但你知道iOS中的消息推送是如何实现的吗&#xff1f;本文将从推送权限申请&#xff0c;到本地和远程消息推送&#xff0c;再到App对推送消息的处理等多个步骤&#xf…

微信里有人每天早上发的早报新闻是从哪里获取的?

微信里有人每天早上发的早报新闻是从哪里获取的? 是专门有人做这种新闻搜集嘛?还是有什么渠道可以获取这样的早报新闻资讯呢? 其实,他们都是从一些大的新闻网站上挑选每日重要的新闻资讯,一般是12条,整理好,然后第二天早上发到群里或朋友圈中,使人们利用碎片化时间,很…

iOS新闻客户端开发教程7-新闻列表

在上教程中&#xff0c;我们介绍了二级导航栏的开发&#xff0c;今天我们来讲解iOS开发中非常常用和重要的组件&#xff1a;“列表”&#xff0c;即UITableView。本节课程将会介绍横向滚动列表和竖向滚动列表&#xff0c;分别来实现二级栏目滑动切换和新闻内容列表的功能。 UIT…

(Android+IOS)正在做一个新闻App,做的差不多了,听听大家的建议 (图)

(AndroidIOS)正在做一个新闻App,做的差不多了,听听大家的建议! 新闻采集器做好了,前端展示APP界面感觉还不是很好,还需要改进改进,希望发布(Android和IOS版本)前听听大家的建议! 新闻采集器做好了,前端展示APP界面感觉还不是很好,还需要改进改进,希望发布前听听大家的建议!

iOS 摸鱼周报 #83 | ChatGPT 的风又起来了

本期概要 本期话题&#xff1a;各大搜索引擎开始接入类 ChatGPT 功能本周学习&#xff1a;Python 中的匿名函数与闭包内容推荐&#xff1a;iOS 越狱检测、获取虚拟内存状态、使用 KeyChain 进行持久化等内容摸一下鱼&#xff1a;Stable Diffusion 功能尝鲜&#xff1b;关于技术…

编程和数学是什么关系?编程学习为什么会这么火呢?

近两年&#xff0c;编程学习成为了一个热门话题&#xff0c;其热度不亚于之前的奥数&#xff0c;为什么突然会有这么多人想要学编程&#xff0c;其中不限于互联网从业者&#xff0c;而更多是中小学学生&#xff0c;那么&#xff0c;今天悉之君就带大家一探究竟。 什么是编程&a…

计算机编程数学英语不好怎么办,英语和数学不好的人是不是学不会编程?

原标题&#xff1a;英语和数学不好的人是不是学不会编程&#xff1f; 收到很多咨询的留言&#xff0c;学生总是会问&#xff1a; “我成绩不好&#xff0c;能学好编程吗&#xff1f;” “我数学不好是不是代表逻辑思维不行&#xff1f;” “我英语都不及格&#xff0c;那么多单…

用编程学数学:让数学不枯燥,让编程不神秘!

许多人总爱问&#xff1a;编程那么难&#xff0c;能学好吗&#xff0c;或者学编程到底能干啥&#xff1f;等等诸如此类的问题。 但是&#xff0c;其实编程并没有大家想象中的那么难&#xff0c;编程要培养的也只是一项基础的思维逻辑。 编程所需要的很多能力和数学是相通的。…

为什么人人都学Python,讲清楚了,只要初中数学基础你就可以编程

Python越来越热&#xff0c;随着大数据和人工智能的兴起&#xff0c;Python将会继续热。 2022年7月&#xff0c;Python依旧占据Tiobe榜首位置&#xff0c;属实是“霸榜”编程语言。 不仅如此&#xff0c;Python在其他排行榜中&#xff0c;也是常年占据榜首或者前列位置&#…

编程用不到微积分,可我们为什么还要学数学?

数学对于一位程序员到底意味着什么呢&#xff1f; 先跟你分享一个关于 Google 面试题的故事&#xff1a; 2004 年的某天&#xff0c;硅谷的交通动脉 101 公路上突然出现了一块巨大的广告牌&#xff0c;上面是一道数学题&#xff1a;{e 的连续数字中最先出现的 10 位质数}.com。…

数学不好能学好编程吗?你来告诉你

诚然&#xff0c;编程离不开数学&#xff0c;或者可以说数学是任何科学的基础&#xff0c;但这不意味着在开始学习编程之前必须对数学很在行或者数学分数很高&#xff0c;那我们今天就来讨论下数学与编程的关系。 首先&#xff0c;如果想要能够进行基本的编程&#xff0c;哪些数…

分享:作为程序员,为什么你应该学好数学?

你好&#xff0c;我是黄申&#xff0c;目前在 LinkedIn 从事数据科学的工作&#xff0c;主要负责全球领英的搜索引擎优化&#xff0c;算法和数据架构的搭建。 2006 年&#xff0c;我博士毕业于上海交通大学计算机科学与工程专业&#xff0c;在接下来十余年时间里&#xff0c;我…

没有数学基础可以学编程吗?

一、为什么学编程 这里我并不是问大家&#xff0c;是因为兴趣啊还是就业学编程。 而是&#xff0c;我想要学Python为了量化交易&#xff0c;或者我要处理表格。我想要学Java我就想自己建站。是否有这种非常明确的目标&#xff0c;有目标才能明确学习路线。 如果在这里&#…

只有1%的人才知道的ChatGPT写作技巧

随意的提示只能产出糟糕的输出&#xff0c;要想让ChatGPT输出高质量内容&#xff0c;需要一些技巧。原文: Stop doing this on ChatGPT and get ahead of the 99% of its users[1] 如果你尝试过用ChatGPT写作&#xff0c;也许会对AI生成的内容感到沮丧&#xff0c;也许认为Chat…

边锋网络入选2019中国互联网企业100强榜单

【TechWeb】8月14日消息&#xff0c;中国互联网协会、工业和信息化部网络安全产业发展中心&#xff08;工业和信息化部信息中心&#xff09;今日发布了2019年中国互联网企业100强榜单&#xff0c;杭州边锋网络技术有限公司&#xff08;下文简称边锋网络&#xff09;入选。 边锋…

【关于2022年卡塔尔世界杯】

2022卡塔尔世界杯最全面的看点和分析,相信一定有你感兴趣的一点,相信一定会有你感兴趣的,推荐点赞收藏~~ 2022年世界杯比以往任何时候都晚,因为卡塔尔太热了…… 然而,四年一度的世界杯终于……来了 今年的世界杯,你最期待什么? 你认为谁会成为今年的冠军? 和小文一…

数据趣事:豪掷2200亿美元举办的世界杯有多精彩!世界杯趣事你知道哪些

2022卡塔尔世界杯正如火如荼的进行着&#xff0c;此次的卡塔尔世界杯也是中东和阿拉伯地区首次举办&#xff0c;为此卡塔尔更是豪掷2200亿美元&#xff0c;远超历届主办国。 本届世界杯共有32支来自不同国家的队伍&#xff0c;他们都有一个共同的奋斗目标——捧起大力神杯&…

中国20强(上市)游戏公司2022年财报分析:营收结构优化,市场竞争进入白热化

易观&#xff1a;受全球经济增速下行的消极影响&#xff0c;2022年国内外游戏市场规模普遍下滑。但中国游戏公司凭借处于全球领先水平的研发、发行和运营的能力与经验&#xff0c;继续加大海外市场布局&#xff0c;推动高质量发展迈上新台阶。 风险提示&#xff1a;本文内容仅代…

盛大边锋总裁许朝军离职创业正组建团队

2月15日消息&#xff0c;盛大边锋总裁许朝军今日向腾讯科技证实自己已离职创业&#xff0c;创业选择的方向是移动互联网&#xff0c;目前正在组建团队开发产品。许朝军还在腾讯微博中感叹&#xff1a;“成功是偶然&#xff0c;失败是必然。但是自己要开始惊险一跳!” 据了解&am…