Android简单实现天气预报App

 更新时间:2022年09月11日 12:10:44   作者:啦啦啦???  
这篇文章主要为大家详细介绍了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) {

            }
        });
    }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android常用进度条效果分享

    Android常用进度条效果分享

    这篇文章主要为大家分享了Android常用进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Android RecycleView使用(CheckBox全选、反选、单选)

    Android RecycleView使用(CheckBox全选、反选、单选)

    这篇文章主要为大家详细介绍了Android RecycleView使用,CheckBox全选、反选、单选效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • 在android中增加curl的解决方法

    在android中增加curl的解决方法

    本篇文章是对在android中增加curl的解决方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • 详解LeakCanary分析内存泄露如何实现

    详解LeakCanary分析内存泄露如何实现

    这篇文章主要为大家介绍了详解LeakCanary分析内存泄露如何实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Android Studio升级4.1.1后各种错误和解决方案

    Android Studio升级4.1.1后各种错误和解决方案

    这篇文章主要介绍了Android Studio升级4.1.1后各种错误和解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Android 中的 Timer 和 TimerTask详解

    Android 中的 Timer 和 TimerTask详解

    Timer 是 Java 中用于创建定时任务的类,它位于 java.util 包中,可以使用Timer来安排一次性或定期执行的任务,这篇文章主要介绍了Android 的 Timer 和 TimerTask,需要的朋友可以参考下
    2024-05-05
  • Android仿新浪微博、QQ空间等帖子显示(2)

    Android仿新浪微博、QQ空间等帖子显示(2)

    这篇文章主要为大家详细介绍了Android仿新浪微博、QQ空间等帖子显示,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • Android超清晰6.0权限申请AndPermission

    Android超清晰6.0权限申请AndPermission

    这篇文章主要介绍了Android超清晰6.0权限申请AndPermission,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • Android实现语音数据实时采集、播放

    Android实现语音数据实时采集、播放

    这篇文章主要介绍了android实现语音数据实时采集、播放的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Android自定义View实现弹性小球效果

    Android自定义View实现弹性小球效果

    前段时间看到一个功能,是一个小球沿着固定轨迹弹动的效果,那么这篇文章小编给大家分享在Android中如何自定义View来实现弹性小球的效果,有需要的可以参考借鉴。
    2016-09-09

最新评论