Android简单实现天气预报App
作者:啦啦啦??? 发布时间:2022-11-05 05:50:32
标签:Android,天气预报,App
本文实例为大家分享了Android简单实现天气预报App的具体代码,供大家参考,具体内容如下
一、UI设计
首页UI
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/week10_3"
tools:context=".MainActivity">
<TextView
android:id="@+id/text1"
android:layout_width="133dp"
android:layout_height="81dp"
android:text="确定"
android:textSize="30dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/address"
android:layout_width="214dp"
android:layout_height="98dp"
android:layout_marginTop="180dp"
android:ems="10"
android:inputType="textPersonName"
android:text="请选择城市"
android:gravity="center"
android:textSize="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果:
展示页面UI
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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/view"
tools:context=".ShowActivity">
<TextView
android:id="@+id/textView"
android:layout_width="107dp"
android:layout_height="59dp"
android:layout_marginStart="16dp"
android:layout_marginTop="36dp"
android:gravity="center"
android:text="地址"
android:textColor="@color/white"
android:textSize="30dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView3"
android:layout_width="153dp"
android:layout_height="142dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
android:text="气温"
android:textColor="@color/white"
android:textSize="70dp"
app:layout_constraintStart_toStartOf="@+id/textView"
app:layout_constraintTop_toBottomOf="@+id/textView" />
<TextView
android:id="@+id/textView4"
android:layout_width="98dp"
android:layout_height="55dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
android:text="天气"
android:textColor="@color/white"
android:textSize="30dp"
app:layout_constraintBottom_toBottomOf="@+id/textView3"
app:layout_constraintStart_toEndOf="@+id/textView3" />
<TextView
android:id="@+id/textView5"
android:layout_width="251dp"
android:layout_height="60dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="风力风向 湿度"
android:textColor="@color/white"
android:textSize="23dp"
app:layout_constraintStart_toStartOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView3" />
<TextView
android:id="@+id/textView6"
android:layout_width="97dp"
android:layout_height="44dp"
android:text="空气质量"
android:textColor="@color/white"
android:gravity="center"
android:textSize="20dp"
android:fontFamily="sans-serif-black"
app:layout_constraintBottom_toTopOf="@+id/textView4"
app:layout_constraintEnd_toEndOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="185dp"
android:layout_height="190dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent">
<TextView
android:id="@+id/texttoday"
android:layout_width="70dp"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginTop="20dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
android:text="今天"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/weathertoday"
android:layout_width="100dp"
android:layout_height="45dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
android:text="TextView"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/texttoday" />
<TextView
android:id="@+id/temtoday"
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_marginTop="30dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="TextView"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintStart_toStartOf="@+id/texttoday"
app:layout_constraintTop_toBottomOf="@+id/texttoday" />
<TextView
android:id="@+id/qualtoday"
android:layout_width="50dp"
android:layout_height="45dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="良"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/temtoday" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="185dp"
android:layout_height="190dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/texttomo"
android:layout_width="70dp"
android:layout_height="45dp"
android:layout_marginStart="8dp"
android:layout_marginTop="20dp"
android:text="明天"
android:textSize="24dp"
android:textColor="@color/white"
android:gravity="center"
android:fontFamily="sans-serif-black"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/weathertomo"
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_marginEnd="15dp"
android:fontFamily="sans-serif-black"
android:gravity="center"
android:text="TextView"
android:textColor="@color/white"
android:textSize="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/texttomo" />
<TextView
android:id="@+id/temtomo"
android:layout_width="100dp"
android:layout_height="45dp"
android:layout_marginTop="30dp"
android:text="TextView"
android:textSize="24dp"
android:textColor="@color/white"
android:gravity="center"
android:fontFamily="sans-serif-black"
app:layout_constraintStart_toStartOf="@+id/texttomo"
app:layout_constraintTop_toBottomOf="@+id/texttomo" />
<TextView
android:id="@+id/qualtomo"
android:layout_width="50dp"
android:layout_height="45dp"
android:text="TextView"
android:textSize="24dp"
android:textColor="@color/white"
android:gravity="center"
android:fontFamily="sans-serif-black"
app:layout_constraintEnd_toEndOf="@+id/weathertomo"
app:layout_constraintTop_toTopOf="@+id/temtomo" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/textView16"
android:layout_width="251dp"
android:layout_height="60dp"
android:fontFamily="sans-serif-black"
android:gravity="left"
android:text="TextView"
android:textColor="@color/white"
android:textSize="23dp"
app:layout_constraintStart_toStartOf="@+id/textView3"
app:layout_constraintTop_toBottomOf="@+id/textView5" />
</androidx.constraintlayout.widget.ConstraintLayout>
效果:
二、调用数据并上传至前台
这里我将首页设置一个输入框,里面输入地点,然后将地点的值传给展示页面,让展示页面接收到地点后再连接对应的API并调用数据。
1.首页
代码如下(示例):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getSupportActionBar().hide();
ImmersionBar.with(this)
//.statusBarColor(R.color.purple_200) //不写默认透明
.init();
TextView textView=findViewById(R.id.text1);
EditText editText=findViewById(R.id.address);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String address=editText.getText().toString();
Intent intent=new Intent(MainActivity.this,ShowActivity.class);
intent.putExtra("address",address);
startActivity(intent);
}
});
editText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(editText.getText().toString()!=null){
editText.setText("");
}
}
});
}
2.展示页面
代码如下(示例):
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
getSupportActionBar().hide();
ImmersionBar.with(this)
//.statusBarColor(R.color.purple_200) //不写默认透明
.init();
TextView textView=findViewById(R.id.textView);
TextView tem=findViewById(R.id.textView3);
TextView wind=findViewById(R.id.textView5);
TextView aqi=findViewById(R.id.textView6);
TextView weather=findViewById(R.id.textView4);
TextView ziwaixian=findViewById(R.id.textView16);
TextView t2=findViewById(R.id.weathertoday);
TextView t3=findViewById(R.id.temtoday);
TextView t4=findViewById(R.id.qualtoday);
TextView m2=findViewById(R.id.weathertomo);
TextView m3=findViewById(R.id.temtomo);
TextView m4=findViewById(R.id.qualtomo);
Intent intent=getIntent();
String address=getIntent().getStringExtra("address");
textView.setText(address);
//c5494be085dd41dca6ec4ffa59c9ed6a
String code="APPCODE "+"c5494be085dd41dca6ec4ffa59c9ed6a";
Api api=RetrofitUtils.getRetrofit("https://ali-weather.showapi.com/").create(Api.class);
Call<WeatherResult> weatherResultCall=api.getWeather(code,address);
weatherResultCall.enqueue(new Callback<WeatherResult>() {
@Override
public void onResponse(Call<WeatherResult> call, Response<WeatherResult> response) {
WeatherResult weatherResult = response.body();
t2.setText(weatherResult.showapi_res_body.f1.day_weather);
t3.setText(weatherResult.showapi_res_body.f1.day_air_temperature+"/"+weatherResult.showapi_res_body.f1.night_air_temperature+"℃");
t4.setText(weatherResult.showapi_res_body.f1.jiangshui);
m2.setText(weatherResult.showapi_res_body.f2.day_weather);
m3.setText(weatherResult.showapi_res_body.f2.day_air_temperature+"/"+weatherResult.showapi_res_body.f2.night_air_temperature+"℃");
m4.setText(weatherResult.showapi_res_body.f2.jiangshui);
tem.setText(weatherResult.showapi_res_body.now.temperature+"℃");
weather.setText(weatherResult.showapi_res_body.now.weather);
wind.setText(weatherResult.showapi_res_body.now.wind_direction+weatherResult.showapi_res_body.now.wind_power+" "+weatherResult.showapi_res_body.now.sd);
aqi.setText("aqi:"+weatherResult.showapi_res_body.now.aqi);
ziwaixian.setText("紫外线强度:"+weatherResult.showapi_res_body.f1.ziwaixian);
}
@Override
public void onFailure(Call<WeatherResult> call, Throwable t) {
}
});
}
来源:https://blog.csdn.net/m0_56071898/article/details/124628812
0
投稿
猜你喜欢
- 这是一个运用网格布局来做的简易计算器,可能没有那么美观,大家可以继续完善首先先看看成果吧首先先建一个新的Project Calculator
- JDK * 的过程JDK * 采用字节重组,重新生成对象来替代原始对象,以达到 * 的目的。JDK中有一个规范,在ClassPath下
- 目录一、基本使用二、常用的 APIImageLoaderImageRequestDisposable图片变换三、功能拓展Intercepto
- 本文实例为大家分享了java数字转汉字工具类的具体代码,供大家参考,具体内容如下/** * Created by 33303 on 2017
- 提示:这里可以添加本文要记录的大概内容:例如:一般系统前端调用后台相关功能接口时,需要验证此时用户的权限是否满足调用该接口的条件,因此我们需
- Java注解(annotation)简单上手反射reflect:https://www.jb51.net/article/221282.ht
- 平时,我们将c#中的Distinct大多用于对数组去重,一般数组为基础的数据类型,例如 int,string.也可以用于对象去重,我们看看C
- 这篇文章主要介绍了java获取当前时间并格式化代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋
- 前言:由于公司的业务,硬生生的把ios开发的我,掰成了android!关于上传文件的需求处理,做了一个Java的简单封装 DocumentM
- resultTyperesultType可以把查询结果封装到pojo类型中,但必须pojo类的属性名和查询到的数据库表的字段名一致。如果sq
- 一、前置说明本节大纲使用lombok插件的好处如何安装lombok插件使用lombok提高开发效率二、使用lombok插件的好处我们在jav
- 首先来说一下本文中例子所要实现的功能:基于ProtoBuf序列化对象使用Socket实现时时通信数据包的编码和解码下面来看具体的步骤:一、U
- 前言最近接到个需求,不使用第三方SDK的情况下实现IM通讯,文字聊天已经通过MQTT实现,而语音功能目前想到的较好解决方案就是进行录音文件的
- PS: 之前写过一篇关于 SpringBoo 中使用配置文件的一些姿势,不过嘛,有句话(我)说的好:曾见小桥流水,未睹观音坐莲!所以再写一篇
- 本文实例讲述了Hibernate环境搭建与配置方法。分享给大家供大家参考,具体如下:1.下载hibernate jar包:hibernate
- 一.导入Netty依赖<dependency> <groupId>io.netty</group
- 简单工厂模式:由一个工厂对象决定创建出哪一种类的实例。1.抽象类public abstract class People { p
- 1.Knife4j在线API文档基本使用Knife4j是一款基于Swagger 2的在线API文档框架。使用Knife4j的基础步骤:添加依
- 本文实例讲述了Java设计模式之模板方法模式。分享给大家供大家参考,具体如下:我们在生活中,很多事情都包含特定的一些步骤。如去银行办理业务,
- 本文实例为大家分享了java实现字符串反转的具体代码,供大家参考,具体内容如下1.需求:定义一个方法,实现字符串反转。键盘录入一个字符串,调