当前位置:首页 > 谈天说地

Android简单实现天气预报App

34资源网2022-09-13249

本文实例为大家分享了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元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/22063.html

分享给朋友:

相关文章

100元内最好的音箱选择哪种好?看看这款适合你不?

100元内最好的音箱选择哪种好?看看这款适合你不?

目前市面上的音箱种类繁多,有的音质非常好,有的音质比较差,有些朋友酷爱音乐,可是又不想花太多钱在这些音箱上面,一般都会选择一些100元以内的音箱。那么100元内最好的音箱选择哪种好?下面,小编给大家推荐一款迷你型的小音箱,大家一起来看看吧。…

名人名言大全,分享100句

名人名言大全,分享100句

名人名言100句:…

适合普通人做的小本创业点子

适合普通人做的小本创业点子

适合普通人做的小本创业生意有什么??随着零售行业的兴起,小型超市便利店生意成为创业者首选的项目之一,主要原因在于:投入资金小、回笼快,不需要太大的现金流来支撑、一年半左右就能回本。这对于拥有一部分闲置资金,想创业的投资者来说简直是很好的创业…

一场关于元宇宙公司之死的剧本杀

一场关于元宇宙公司之死的剧本杀

编者按:本文来自脑极体,创业邦经授权发布。 2021年,被称作元宇宙元年。这种结合了区块链、虚拟现实、增强现实多种技术的概念,据称能够提供社交、娱乐、电商多种功能。美国彭博社称,元宇宙的市场规模将在2024年将达到8000亿美元。而就在20…

在爆破产品中内置芯片,「煋邦数码」让爆破产品被精准控制、全程追溯

在爆破产品中内置芯片,「煋邦数码」让爆破产品被精准控制、全程追溯

工业电雷管作为雷管的第二大品种,近几年已逐渐被数码电子雷管取代。 根据《民爆行业经济运行分析报告》显示,2020年工业雷管总产量为9.56亿发,其中电子雷管的产量和占比继续保持着高速增长。从近五年电子雷管产量变化情况看,2020年电子雷管产…

火了12年,“假洋鬼子”终于翻车了

火了12年,“假洋鬼子”终于翻车了

图源:摄图网 编者按:本文来自微信公众号格隆汇财经热点(ID:glh_finance),作者:万连山,创业邦经授权转载 你肯定看到过这样一幅广告:一个与乔布斯颇有几分相似的神秘洋老头,戴着金丝眼镜,有时叼着烟斗,有时没有,出现在各大高铁站和…