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