Android天气预报项目

本文介绍了Android天气预报项目的实现,包括项目效果图展示,主页面MainActivity的Java代码和XML布局,网络工具类NetUtils,天气数据Bean WeatherBean,以及搜索页面SearchActivity的XML解析功能。此外,还涉及到了XMLParser工具类和自定义帧动画pb_bg.xml的使用。
摘要由CSDN通过智能技术生成

1、项目效果图:

2、主页面MainActivity代码如下:

MainActivity.java

package com.qianfeng.weather;

import android.content.Intent;
import android.graphics.drawable.AnimationDrawable;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private ImageView refreshIv;
    private ImageView searchIv;
    private TextView cityTv;
    private TextView pmTv;
    private TextView errorTv;
    private TextView tempTv;
    private TextView weatherTv;
    private TextView windTv;
    private TextView dateTv;
    private View lineView;
    private LinearLayout otherLl;

    private List<String> weekList;
    private Handler handler;

    private int code = 101100101;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();
        getData(code);
        setListener();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 100) {
            code = resultCode;
            getData(code);
        }
    }

    private void setListener() {
        refreshIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                getData(code);
            }
        });
        searchIv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(MainActivity.this,
                        SearchActivity.class);
                startActivityForResult(intent, 100);
            }
        });
    }

    /**
     *
     */
    private void initData() {
//        在Android中借助handler类实现从服务器获取数据后更新UI页面(Handler原理)
        handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                if (msg.what == 200) {
                    errorTv.setText((String) msg.obj);
                }
                if (msg.what == 100) {
                    errorTv.setText("");
//                    停止转圈动画
                    refreshIv.setBackgroundResource(R.mipmap.refresh);
                    List<WeatherBean> list = (List<WeatherBean>) msg.obj;
                    cityTv.setText(list.get(0).getCity());
                    pmTv.setText(list.get(0).getPm());
                    tempTv.setText(list.get(0).getTempCurrent());
                    weatherTv.setText(list.get(0).getWeather() + " " + list.get(0).getTemp());
                    windTv.setText(list.get(0).getWindCurrent());
                    dateTv.setText(list.get(0).getDate_y() + " " + list.get(0).getWeek());
                    if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("优")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm1));
                    } else if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("良")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm2));
                    } else if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("轻度污染")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm3));
                    } else if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("中度")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm4));
                    } else if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("重度")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm5));
                    } else if (list.get(0).getPm().substring(list.get(0).getPm().lastIndexOf(" ") + 1).equals("严重")) {
                        lineView.setBackgroundColor(getResources().getColor(R.color.pm6));
                    }
//                    清空水平滚动条的孙子辈视图
                    otherLl.removeAllViews();
//                    将未来五天的天气信息动态设置到水平滚动条中的线性布局中的子视图中
                    for (int i = 1; i < list.size(); i++) {
                        View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item, null);
                        TextView weekItemTv = (TextView) view.findViewById(R.id.tv_week_item);
                        TextView weatherItemTv = (TextView) view.findViewById(R.id.tv_weather_item);
                        TextView tempItemTv = (TextView) view.findViewById(R.id.tv_temp_item);
                        weekItemTv.setText(list.get(i).getWeek());
                        weatherItemTv.setText(list.get(i).getWeather());
                        tempItemTv.setText(list.get(i).getTemp());
//                        动态将item视图添加到otherLl中
                        otherLl.addV
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值