Android 天气APP(二十三)增加灾害预警、优化主页面UI

这篇具有很好参考价值的文章主要介绍了Android 天气APP(二十三)增加灾害预警、优化主页面UI。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

正文

public String getCode() {

return code;

}

public void setCode(String code) {

this.code = code;

}

public String getUpdateTime() {

return updateTime;

}

public void setUpdateTime(String updateTime) {

this.updateTime = updateTime;

}

public String getFxLink() {

return fxLink;

}

public void setFxLink(String fxLink) {

this.fxLink = fxLink;

}

public ReferBean getRefer() {

return refer;

}

public void setRefer(ReferBean refer) {

this.refer = refer;

}

public List getWarning() {

return warning;

}

public void setWarning(List warning) {

this.warning = warning;

}

public static class ReferBean {

private List sources;

private List license;

public List getSources() {

return sources;

}

public void setSources(List sources) {

this.sources = sources;

}

public List getLicense() {

return license;

}

public void setLicense(List license) {

this.license = license;

}

}

public static class WarningBean {

/**

  • id : 23062241600000_20200813132751

  • sender : 肇源县气象局

  • pubTime : 2020-08-13T13:28+08:00

  • title : 肇源县气象局发布大风蓝色预警[IV级/一般]

  • startTime : 2020-08-13T13:30+08:00

  • endTime : 2020-08-14T13:30+08:00

  • status : active

  • level : 蓝色

  • type : 11B06

  • typeName : 大风

  • text : 肇源县气象台2020年8月13日13时28分发布大风蓝色预警信号:预计未来24小时肇源县受大风影响,平均风力可达5-6级,阵风可达7-8级,请有关单位和个人注意做好预防工作。防御指南:1.政府及相关部门按照职责做好防大风工作;2.关好门窗,加固围板、棚架、广告牌等易被风吹动的搭建物,妥善安置易受大风影响的室外物品,遮盖建筑物资;3.行人注意尽量少骑自行车,刮风时不要在广告牌、临时搭建物等下面逗留;4.有关部门和单位请注意森林、草原防火等防火,个人请注意室外和野外用火安全。

  • related :

*/

private String id;

private String sender;

private String pubTime;

private String title;

private String startTime;

private String endTime;

private String status;

private String level;

private String type;

private String typeName;

private String text;

private String related;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getSender() {

return sender;

}

public void setSender(String sender) {

this.sender = sender;

}

public String getPubTime() {

return pubTime;

}

public void setPubTime(String pubTime) {

this.pubTime = pubTime;

}

public String getTitle() {

return title;

}

public void setTitle(String title) {

this.title = title;

}

public String getStartTime() {

return startTime;

}

public void setStartTime(String startTime) {

this.startTime = startTime;

}

public String getEndTime() {

return endTime;

}

public void setEndTime(String endTime) {

this.endTime = endTime;

}

public String getStatus() {

return status;

}

public void setStatus(String status) {

this.status = status;

}

public String getLevel() {

return level;

}

public void setLevel(String level) {

this.level = level;

}

public String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public String getTypeName() {

return typeName;

}

public void setTypeName(String typeName) {

this.typeName = typeName;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getRelated() {

return related;

}

public void setRelated(String related) {

this.related = related;

}

}

}

2.新增API和方法


打开ApiService

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

新增了一个api接口,然后进入WeatherContract中,新增请求方法和返回

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

然后进入到MainActivity中增加

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

完成到这里,然后做数据的请求,在搜索城市的返回值中获取id,然后写入请求。

3.数据渲染


Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

然后在返回的地方做数据的展示处理就可以了。先进入到activity_main.xml中,增加一个TextView,这个TextView做了一个简单的自定义修改,在mvplibrary下的view包下新建一个MarqueeTextView,然后继承TextView,代码如下:

package com.llw.mvplibrary.view;

import android.annotation.SuppressLint;

import android.content.Context;

import android.util.AttributeSet;

import android.widget.TextView;

import androidx.annotation.Nullable;

@SuppressLint(“AppCompatCustomView”)

public class MarqueeTextView extends TextView {

public MarqueeTextView(Context context) {

super(context);

}

public MarqueeTextView(Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

}

public MarqueeTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

}

@Override

public boolean isFocused() {

return true;

}

}

然后在布局中使用。

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

注意我放的位置,是在星期的上面,这个布局也要算在滑动的高度计算里面

<com.llw.mvplibrary.view.MarqueeTextView

android:id=“@+id/tv_warn”

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_marginStart=“@dimen/dp_16”

android:layout_marginEnd=“@dimen/dp_16”

android:ellipsize=“marquee”

android:marqueeRepeatLimit=“marquee_forever”

android:paddingTop=“@dimen/dp_4”

android:paddingBottom=“@dimen/dp_4”

android:singleLine=“true”

android:textColor=“@color/white”

android:textSize=“@dimen/sp_12” />

android:marqueeRepeatLimit="marquee_forever"表示一直滚动

android:singleLine="true"表示单行

android:ellipsize="marquee"这里设置为超出文本后滚动显示

在MainActivity中声明

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

在返回值中做显示处理

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

这个灾害预警是存在没有数据的情况,所以没有数据的时候就隐藏掉这个TextView,这个我要说明一下不是所有城市都有灾害预警的,看你的运行了,如果没有数据你得到的返回就是这样的。

{

“code”: “200”,

“updateTime”: “2020-08-14T10:59+08:00”,

“fxLink”: “http://hfx.link/1u0z5”,

“warning”: [],

“refer”: {

“sources”: [

“12379”,

“Weather China”

],

“license”: [

“no commercial use”

]

}

}

这个我还特地问过和风那边是怎么回事,他们是这样回复我的。

如果你查询的城市预警信息返回为空,则代表这个城市当前没有预警信息。你也可以通过预警城市列表获得当前所有发生预警的城市id。即如果你想知道现在深圳市是否有预警,可以直接访问深圳市的预警信息,返回为空则当前无预警,或者访问预警城市列表,如果深圳城市id不在这个列表中,也代表当前深圳无预警。

他这里提到的预警城市列表,你可以用这个请求地址去获取,

https://devapi.heweather.net/v7/warning/list?range=cn&key=3086e91d66c04ce588a7f538f917c7f4

返回值就是当前有灾害预警的城市id列表,但是这个里面如果没有你当前定位到的城市的id,那你这个城市就没有灾害预警的信息,当然你想看数据的话,可以这样。下面我用这个101200106来演示这些数据。否则不够直观。

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

先这样赋值,然后你现在就可以运行了。

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

OK,效果就是上面那样,下面要做这个点击之后打开详情页面

4.灾害预报详情


在app下的ui包中新建一个WarnActivity,页面的布局如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

xmlns:app=“http://schemas.android.com/apk/res-auto”

xmlns:tools=“http://schemas.android.com/tools”

android:layout_width=“match_parent”

android:layout_height=“match_parent”

android:background=“@drawable/img_6”

android:fitsSystemWindows=“true”

android:orientation=“vertical”

tools:context=“.ui.WarnActivity”>

<androidx.appcompat.widget.Toolbar

android:id=“@+id/toolbar”

android:layout_width=“match_parent”

android:layout_height=“?attr/actionBarSize”

app:contentInsetLeft=“@dimen/dp_16”

app:layout_constraintEnd_toEndOf=“parent”

app:layout_constraintLeft_toLeftOf=“parent”

app:layout_constraintTop_toTopOf=“parent”

app:navigationIcon=“@mipmap/icon_return_white”

app:popupTheme=“@style/AppTheme.PopupOverlay”>

<TextView

android:layout_width=“wrap_content”

android:layout_height=“wrap_content”

android:layout_gravity=“center”

android:text=“灾害预警详情”

android:textColor=“@color/white”

android:textSize=“@dimen/sp_18” />

</androidx.appcompat.widget.Toolbar>

<androidx.recyclerview.widget.RecyclerView

android:paddingTop=“@dimen/dp_10”

android:id=“@+id/rv”

android:overScrollMode=“never”

android:layout_width=“match_parent”

android:layout_height=“match_parent”/>

最后说一下我的学习路线

其实很简单就下面这张图,含概了Android所有需要学的知识点,一共8大板块:

  1. 架构师筑基必备技能
  2. Android框架体系架构(高级UI+FrameWork源码)
  3. 360°Androidapp全方位性能调优
  4. 设计思想解读开源框架
  5. NDK模块开发
  6. 移动架构师专题项目实战环节
  7. 移动架构师不可不学习微信小程序
  8. 混合开发的flutter

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

Android学习的资料

我呢,把上面八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

330页PDF Android学习核心笔记(内含上面8大板块)

Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

Android学习的系统对应视频

总结

我希望通过我自己的学习方法来帮助大家去提升技术:

  • 1、多看书、看源码和做项目,平时多种总结

  • 2、不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理

  • 3、同时对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习

  • 4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!

希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
Android 天气APP(二十三)增加灾害预警、优化主页面UI,2024年程序员学习,android,ui

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!文章来源地址https://www.toymoban.com/news/detail-858698.html

八大板块的分支都系统的做了一份学习系统的资料和视频,大概就下面这些,我就不全部写出来了,不然太长了影响大家的阅读。

330页PDF Android学习核心笔记(内含上面8大板块)

[外链图片转存中…(img-aayMo8Zd-1713224813811)]

Android学习的系统对应视频

总结

我希望通过我自己的学习方法来帮助大家去提升技术:

  • 1、多看书、看源码和做项目,平时多种总结

  • 2、不能停留在一些基本api的使用上,应该往更深层次的方向去研究,比如activity、view的内部运行机制,比如Android内存优化,比如aidl,比如JNI等,并不仅仅停留在会用,而要通过阅读源码,理解其实现原理

  • 3、同时对架构是有一定要求的,架构是抽象的,但是设计模式是具体的,所以一定要加强下设计模式的学习

  • 4、android的方向也很多,高级UI,移动架构师,数据结构与算法和音视频FFMpeg解码,如果你对其中一项比较感兴趣,就大胆的进阶吧!

希望大家多多点赞,转发,评论加关注,你们的支持就是我继续下去的动力!加油!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
[外链图片转存中…(img-xJl1Q5XI-1713224813812)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

到了这里,关于Android 天气APP(二十三)增加灾害预警、优化主页面UI的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kotlin 编写一个简单的天气预报app(二)增加搜索城市功能

    在activity_main.xml里增加输入框来输入城市,在输入款旁边增加搜索按钮来进行查询。 然后原来显示helloworld的TextView用来显示结果。 增加搜索按钮 使用broadcast的方式把收到的天气信息发送到界面显示。 Android的广播机制是一种用于在应用程序内和应用程序之间传递消息和事件的

    2024年02月14日
    浏览(45)
  • 地质灾害安全监测预警解决方案

    一、方案背景 我国地质和地理环境复杂,气候条件时空差异大,地质灾害种类多、分布广、危害大,是世界上地质灾害最严重的国家之一。地质灾害来源于自然和人为作用下对地质环境的灾难性后果,主要包括崩塌、滑坡、泥石流、地面塌陷和地裂缝等。 近年来,关于滑坡

    2023年04月16日
    浏览(51)
  • 数字孪生技术辅助山洪灾害预警与应急联动

    山洪是指山区溪沟中发生的暴涨洪水,山洪是多由暴雨引起,通常指在山区沿河流及溪沟形成的暴涨暴落的洪水及伴随发生的滑坡、崩塌、泥石流,拦洪设施的溃决也可引发山洪。形成因素包括地质地貌因素、气象水文因素以及人类活动因素。 虚幻引擎洪水仿真效果 “十四

    2023年04月25日
    浏览(42)
  • 如何通过边缘智能网关实现暴雨灾害监测预警

    随着台风季来临,暴雨灾害也进入到频发阶段,给村镇和城市居民都造成诸多人身和财产损失。针对南方台风季的水灾防治,物联网技术派上大用场,本篇就基于边缘智能网关的数采方案,简单介绍对暴雨导致的洪涝、内涝的监测和预警应用。 以BMG800系列边缘计算网关为例,

    2024年02月16日
    浏览(42)
  • 【大数据之Hive】二十三、HQL语法优化之数据倾斜

      数据倾斜指参与计算的数据分布不均,即某个key或者某些key的数据量远超其他key,导致在shuffle阶段,大量相同key的数据被发往同一个Reduce,导致该Reduce所需的时间远超其他Reduce,成为整个任务的瓶颈。   Hive中的数据倾斜常出现在分组聚合和join操作的场景中 。   

    2024年02月16日
    浏览(57)
  • LiteCVR视频技术在自然灾害智能监管与预警场景中的应用

    一、方案背景 我国是一个自然灾害频发的国家,夏季更是灾害的频发期。在这个时期,山洪、泥石流、洪涝、冰雹、飓风、地震等自然灾害如同野兽般肆虐,每年都给国家经济带来巨大的创伤。面对这一严峻的挑战,建设自然灾害风险预警视频监控系统已迫在眉睫。   二、

    2024年02月02日
    浏览(40)
  • 【前端知识】React 基础巩固(二十三)——React 性能优化 SCU相关

    React 的渲染流程 JSX - 虚拟 DOM - 真实 DOM React 的更新流程 props/state 改变 - render函数重新执行 - 产生新的DOM树 - 新旧DOM树进行diff - 计算出差异进行更新 - 更新到真实的DOM React 在 props 或 state 发生改变时,会调用 React 的 render 方法,会创建一颗不同的树 React 需要基于这两颗不同的

    2024年02月15日
    浏览(73)
  • Android——一个简单的天气APP

    EasyWeather演示效果视频 此天气数据源采用心知天气API(试用版),免费版获取数据有限,只能获取普通的温度、湿度等,例如压力、云量、可见度等均获取不到,试用版相当于正式版,可以获取大部分数据,试用日期是14天。 首页不同城市天气页面之间的滑动采用的是 ViewPager

    2023年04月26日
    浏览(43)
  • Android实现-心知天气API接口开发(天气预报app)

    自己开发app之心知天气APP程序代码粘贴即可用。完整代码附最后。 第一步:去知心天气注册开发者账号查看自己的token。注册好登录进去--控制台---免费版--秘钥。这里的秘钥就是自己的token。(有兴趣的可以看开发文档,这里就不多介绍了)  第二步,下载素材包。点击文档

    2024年02月03日
    浏览(112)
  • 基于Android实现的天气预测APP

    网络数据源使用 Retrofit 库访问彩云 API 提供的 Webservice 接口来实现。 Retrofit 通过封装络请求和数据解析,极地提升了开发效率。并且持定义数据解析在封装所有网络请求的 API 时,我使用了协程技术来简化 Retrofit 回调的写法。 1.1.1 数据存储 本地数据源使用 SharedPreferences 持久

    2024年02月01日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包