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) {
}
});
}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。
看完文章,还可以扫描下面的二维码下载快手极速版领4元红包
除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。
邀请两个好友奖最高196元,如下图所示:







