commit d9af88d707e512140b1150efe3f83b92bfd7a655
Author: 2982339571 <2982339571@qq.com>
Date: Tue May 30 11:35:07 2023 +0800
init
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..603b140
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..b3405b3
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+My Application
\ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..681f41a
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..fb7f4a8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..ce86a83
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..1396c21
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..95ee4c6
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/render.experimental.xml b/.idea/render.experimental.xml
new file mode 100644
index 0000000..8ec256a
--- /dev/null
+++ b/.idea/render.experimental.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..13485c4
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,35 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 29
+ buildToolsVersion "30.0.3"
+ defaultConfig {
+ applicationId "com.example.myapplication"
+ minSdkVersion 23
+ targetSdkVersion 29
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.1'
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+ implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.0'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
+ implementation 'org.xutils:xutils:3.7.6'
+ implementation 'com.squareup.picasso:picasso:2.5.2'
+ implementation 'com.google.code.gson:gson:2.2.4'
+ implementation 'androidx.cardview:cardview:1.0.0'
+ implementation 'com.google.android.material:material:1.3.0-alpha02'
+}
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
new file mode 100644
index 0000000..f1b4245
--- /dev/null
+++ b/app/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..af71346
--- /dev/null
+++ b/app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package com.example.myapplication;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("com.example.myapplication", appContext.getPackageName());
+ }
+}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..532c6d0
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/CityFragmentPagerAdapter.java b/app/src/main/java/com/example/myapplication/CityFragmentPagerAdapter.java
new file mode 100644
index 0000000..35baa4c
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/CityFragmentPagerAdapter.java
@@ -0,0 +1,44 @@
+package com.example.myapplication;
+
+
+import java.util.List;
+
+import androidx.annotation.NonNull;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentStatePagerAdapter;
+
+public class CityFragmentPagerAdapter extends FragmentStatePagerAdapter {
+ ListfragmentList;
+ public CityFragmentPagerAdapter(FragmentManager fm, ListfragmentLis) {
+ super(fm);
+ this.fragmentList = fragmentLis;
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ return fragmentList.get(position);
+ }
+
+ @Override
+ public int getCount() {
+ return fragmentList.size();
+ }
+
+ int childCount = 0; //表示ViewPager包含的页数
+// 当ViewPager的页数发生改变时,必须要重写两个函数
+ @Override
+ public void notifyDataSetChanged() {
+ this.childCount = getCount();
+ super.notifyDataSetChanged();
+ }
+
+ @Override
+ public int getItemPosition(@NonNull Object object) {
+ if (childCount>0) {
+ childCount--;
+ return POSITION_NONE;
+ }
+ return super.getItemPosition(object);
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/CityWeatherFragment.java b/app/src/main/java/com/example/myapplication/CityWeatherFragment.java
new file mode 100644
index 0000000..23eb325
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/CityWeatherFragment.java
@@ -0,0 +1,324 @@
+package com.example.myapplication;
+
+
+import android.app.AlertDialog;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ScrollView;
+import android.widget.TextView;
+import com.example.myapplication.base.BaseFragment;
+import com.example.myapplication.bean.WeatherBean;
+import com.example.myapplication.db.DBManager;
+import com.google.gson.Gson;
+import com.squareup.picasso.Picasso;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import androidx.fragment.app.Fragment;
+
+import static android.content.Context.MODE_PRIVATE;
+
+
+/**
+ * A simple {@link Fragment} subclass.
+ */
+public class CityWeatherFragment extends BaseFragment implements View.OnClickListener{
+ TextView tempTv,cityTv,conditionTv,windTv,tempRangeTv,dateTv,clothIndexTv,carIndexTv,coldIndexTv,sportIndexTv,raysIndexTv,tipTv,umbrellaTv;
+ ImageView dayIv;
+ LinearLayout futureLayout;
+ ScrollView outLayout;
+ String url1 = "https://wis.qq.com/weather/common?source=pc&weather_type=observe|index|rise|alarm|air|tips|forecast_24h&province=";
+ String url2 = "&city=";
+ String city;
+ String provice;
+ private WeatherBean.DataBean.IndexBean index;
+ private SharedPreferences pref;
+ private int bgNum;
+
+ // 换壁纸的函数
+ public void exchangeBg(){
+ pref = getActivity().getSharedPreferences("bg_pref", MODE_PRIVATE);
+ bgNum = pref.getInt("bg", 2);
+ switch (bgNum) {
+ case 0:
+ outLayout.setBackgroundResource(R.mipmap.bg);
+ break;
+ case 1:
+ outLayout.setBackgroundResource(R.mipmap.bg2);
+ break;
+ case 2:
+ outLayout.setBackgroundResource(R.mipmap.bg3);
+ break;
+ }
+
+ }
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_city_weather, container, false);
+ initView(view);
+ exchangeBg();
+// 可以通过activity传值获取到当前fragment加载的是那个地方的省份和天气情况
+ Bundle bundle = getArguments();
+ String provice_city = bundle.getString("city");
+// 获取省份
+ if(provice_city.split(" ").length>1)
+ { provice =provice_city.split(" ")[0];
+ city = provice_city.split(" ")[1];
+ }
+ else
+ {
+ city = provice_city.split(" ")[0];
+ provice = provice_city.split(" ")[0];
+ }
+ String url = url1+provice+url2+city;
+// 调用父类获取数据的方法
+ loadData(url);
+ return view;
+ }
+
+ @Override
+ public void onSuccess(String result) {
+// 解析并展示数据
+ try {
+ parseShowData(result);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+// 更新数据
+ int i = DBManager.updateInfoByCity(city, result);
+ if (i<=0) {
+// 更新数据库失败,说明没有这条城市信息,增加这个城市记录
+ DBManager.addCityInfo(city,result);
+ }
+ }
+ @Override
+ public void onError(Throwable ex, boolean isOnCallback) {
+// 数据库当中查找上一次信息显示在Fragment当中
+ String s = DBManager.queryInfoByCity(city);
+ if (!TextUtils.isEmpty(s)) {
+ try {
+ parseShowData(s);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ }
+
+ }
+ private void parseShowData(String result) throws ParseException {
+// 使用gson解析数据
+ WeatherBean weatherBean = new Gson().fromJson(result, WeatherBean.class);
+ WeatherBean.DataBean resultsBean = weatherBean.getData();
+ index = resultsBean.getIndex();
+// 设置TextView
+ cityTv.setText(city);
+ tipTv.setText(resultsBean.getTips().getObserve().get_$0());
+// 获取今日天气情况
+ WeatherBean.DataBean.ObserveBean todayDataBean = resultsBean.getObserve();
+ String time = changeTime(todayDataBean.getUpdate_time());
+ dateTv.setText(time);
+ windTv.setText("湿度 "+todayDataBean.getHumidity()+"%");
+ tempRangeTv.setText("气压 "+todayDataBean.getPressure()+"hPa");
+ conditionTv.setText(todayDataBean.getWeather_short());
+// 获取实时天气温度情况,需要处理字符串
+ tempTv.setText(todayDataBean.getDegree()+"°C");
+ //设置天气情况图片
+ // Picasso.with(getActivity()).load(todayDataBean.getWeather()).into(dayIv);
+
+// 获取近七天的天气情况,加载到layout当中
+ WeatherBean.DataBean.Forecast24hBean futureList = resultsBean.getForecast_24h();
+
+
+ View itemView = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center, null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView);
+ TextView idateTv = itemView.findViewById(R.id.item_center_tv_date);
+ TextView iconTv = itemView.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv = itemView.findViewById(R.id.item_center_tv_temp);
+ TextView wind = itemView.findViewById(R.id.item_center_tv_winddirection);
+// 获取明天对应的位置的天气情况
+ idateTv.setText(futureList.get_$1().getTime());
+ iconTv.setText(futureList.get_$1().getDay_weather());
+ wind.setText(futureList.get_$1().getDay_wind_direction());
+ itemprangeTv.setText(futureList.get_$1().getMin_degree()+"~"+futureList.get_$1().getMax_degree()+"°C");
+
+
+ View itemView3 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center, null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView3);
+ TextView idateTv3 = itemView3.findViewById(R.id.item_center_tv_date);
+ TextView iconTv3 = itemView3.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv3 = itemView3.findViewById(R.id.item_center_tv_temp);
+ TextView wind3 = itemView3.findViewById(R.id.item_center_tv_winddirection);
+// 获取后天对应的位置的天气情况
+ idateTv3.setText(futureList.get_$2().getTime());
+ iconTv3.setText(futureList.get_$2().getDay_weather());
+ wind3.setText(futureList.get_$2().getDay_wind_direction());
+ itemprangeTv3.setText(futureList.get_$2().getMin_degree()+"~"+futureList.get_$2().getMax_degree()+"°C");
+
+
+ View itemView2 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center, null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView2);
+ TextView idateTv2 = itemView2.findViewById(R.id.item_center_tv_date);
+ TextView iconTv2 = itemView2.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv2 = itemView2.findViewById(R.id.item_center_tv_temp);
+ TextView wind2 = itemView2.findViewById(R.id.item_center_tv_winddirection);
+// 获取大后天对应的位置的天气情况
+ idateTv2.setText(futureList.get_$3().getTime());
+ iconTv2.setText(futureList.get_$3().getDay_weather());
+ wind2.setText(futureList.get_$3().getDay_wind_direction());
+ itemprangeTv2.setText(futureList.get_$3().getMin_degree()+"~"+futureList.get_$3().getMax_degree()+"°C");
+
+
+ View itemView4 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center,null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView4);
+ TextView idateTv4 = itemView4.findViewById(R.id.item_center_tv_date);
+ TextView iconTv4 = itemView4.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv4 = itemView4.findViewById(R.id.item_center_tv_temp);
+ TextView wind4 = itemView4.findViewById(R.id.item_center_tv_winddirection);
+ // 获取第四天对应的位置的天气情况
+ idateTv4.setText(futureList.get_$4().getTime());
+ iconTv4.setText(futureList.get_$4().getDay_weather());
+ wind4.setText(futureList.get_$4().getDay_wind_direction());
+ itemprangeTv4.setText(futureList.get_$4().getMin_degree()+"~"+futureList.get_$4().getMax_degree()+"°C");
+
+ View itemView5 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center,null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView5);
+ TextView idateTv5 = itemView5.findViewById(R.id.item_center_tv_date);
+ TextView iconTv5 = itemView5.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv5 = itemView5.findViewById(R.id.item_center_tv_temp);
+ TextView wind5 = itemView5.findViewById(R.id.item_center_tv_winddirection);
+ // 获取第五天对应的位置的天气情况
+ idateTv5.setText(futureList.get_$5().getTime());
+ iconTv5.setText(futureList.get_$5().getDay_weather());
+ wind5.setText(futureList.get_$5().getDay_wind_direction());
+ itemprangeTv5.setText(futureList.get_$5().getMin_degree()+"~"+futureList.get_$5().getMax_degree()+"°C");
+
+
+
+ View itemView6 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center,null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView6);
+ TextView idateTv6 = itemView6.findViewById(R.id.item_center_tv_date);
+ TextView iconTv6 = itemView6.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv6 = itemView6.findViewById(R.id.item_center_tv_temp);
+ TextView wind6 = itemView6.findViewById(R.id.item_center_tv_winddirection);
+ // 获取第六天对应的位置的天气情况
+ idateTv6.setText(futureList.get_$6().getTime());
+ iconTv6.setText(futureList.get_$6().getDay_weather());
+ wind6.setText(futureList.get_$6().getDay_wind_direction());
+ itemprangeTv6.setText(futureList.get_$6().getMin_degree()+"~"+futureList.get_$6().getMax_degree()+"°C");
+
+
+
+ View itemView7 = LayoutInflater.from(getActivity()).inflate(R.layout.item_main_center,null);
+ itemView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ futureLayout.addView(itemView7);
+ TextView idateTv7 = itemView7.findViewById(R.id.item_center_tv_date);
+ TextView iconTv7 = itemView7.findViewById(R.id.item_center_tv_con);
+ TextView itemprangeTv7 = itemView7.findViewById(R.id.item_center_tv_temp);
+ TextView wind7 = itemView7.findViewById(R.id.item_center_tv_winddirection);
+ // 获取第七天对应的位置的天气情况
+ idateTv7.setText(futureList.get_$7().getTime());
+ iconTv7.setText(futureList.get_$7().getDay_weather());
+ wind7.setText(futureList.get_$7().getDay_wind_direction());
+ itemprangeTv7.setText(futureList.get_$7().getMin_degree()+"~"+futureList.get_$7().getMax_degree()+"°C");
+
+
+ }
+
+ // 时间格式化
+ private String changeTime(String update_time) throws ParseException {
+ SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMddHHmm");
+ SimpleDateFormat sf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String sfstr = "";
+ sfstr = sf2.format(sf1.parse(update_time));
+ return sfstr;
+ }
+
+ private void initView(View view) {
+// 用于初始化控件操作
+ tipTv = view.findViewById(R.id.frag_tv_tips);
+ tempTv = view.findViewById(R.id.frag_tv_currenttemp);
+ cityTv = view.findViewById(R.id.frag_tv_city);
+ conditionTv = view.findViewById(R.id.frag_tv_condition);
+ windTv = view.findViewById(R.id.frag_tv_wind);
+ tempRangeTv = view.findViewById(R.id.frag_tv_temprange);
+ dateTv = view.findViewById(R.id.frag_tv_date);
+ clothIndexTv = view.findViewById(R.id.frag_index_tv_dress);
+ carIndexTv = view.findViewById(R.id.frag_index_tv_washcar);
+ coldIndexTv = view.findViewById(R.id.frag_index_tv_cold);
+ sportIndexTv = view.findViewById(R.id.frag_index_tv_sport);
+ raysIndexTv = view.findViewById(R.id.frag_index_tv_rays);
+ dayIv = view.findViewById(R.id.frag_iv_today);
+ futureLayout = view.findViewById(R.id.frag_center_layout);
+ outLayout = view.findViewById(R.id.out_layout);
+ umbrellaTv = view.findViewById(R.id.frag_index_tv_umbrella);
+// 设置点击事件的监听
+ clothIndexTv.setOnClickListener(this);
+ carIndexTv.setOnClickListener(this);
+ coldIndexTv.setOnClickListener(this);
+ sportIndexTv.setOnClickListener(this);
+ raysIndexTv.setOnClickListener(this);
+ umbrellaTv.setOnClickListener(this);
+ }
+ //点击监听事件
+ @Override
+ public void onClick(View v) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+ switch (v.getId()) {
+ case R.id.frag_index_tv_dress:
+ builder.setTitle("穿衣指数");
+ WeatherBean.DataBean.IndexBean.ClothesBean cloth = index.getClothes();
+ String msg = cloth.getInfo()+"\n"+cloth.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ case R.id.frag_index_tv_washcar:
+ builder.setTitle("洗车指数");
+ WeatherBean.DataBean.IndexBean.CarwashBean car = index.getCarwash();
+ msg = car.getInfo()+"\n"+car.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ case R.id.frag_index_tv_cold:
+ builder.setTitle("感冒指数");
+ WeatherBean.DataBean.IndexBean.ColdBean cold = index.getCold();
+ msg = cold.getInfo()+"\n"+cold.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ case R.id.frag_index_tv_sport:
+ builder.setTitle("运动指数");
+ WeatherBean.DataBean.IndexBean.SportsBean sport = index.getSports();
+ msg = sport.getInfo()+"\n"+sport.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ case R.id.frag_index_tv_rays:
+ builder.setTitle("紫外线指数");
+ WeatherBean.DataBean.IndexBean.UltravioletBean ultraviolet = index.getUltraviolet();
+ msg = ultraviolet.getInfo()+"\n"+ultraviolet.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ case R.id.frag_index_tv_umbrella:
+ builder.setTitle("雨伞指数");
+ WeatherBean.DataBean.IndexBean.UmbrellaBean umbrella = index.getUmbrella();
+ msg = umbrella.getInfo()+"\n"+umbrella.getDetail();
+ builder.setMessage(msg);
+ builder.setPositiveButton("确定",null);
+ break;
+ }
+ builder.create().show();
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/MainActivity.java b/app/src/main/java/com/example/myapplication/MainActivity.java
new file mode 100644
index 0000000..d76de6d
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/MainActivity.java
@@ -0,0 +1,184 @@
+package com.example.myapplication;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.fragment.app.Fragment;
+import androidx.viewpager.widget.ViewPager;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+
+import com.example.myapplication.city_manager.CityManagerActivity;
+import com.example.myapplication.db.DBManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class MainActivity extends AppCompatActivity implements View.OnClickListener{
+ ImageView addCityIv,moreIv;
+ LinearLayout pointLayout;
+ RelativeLayout outLayout;
+ ViewPager mainVp;
+ // ViewPager的数据源
+ ListfragmentList;
+ // 表示需要显示的城市的集合
+ ListcityList;
+ // 表示ViewPager的页数指数器显示集合
+ ListimgList;
+ private CityFragmentPagerAdapter adapter;
+ private SharedPreferences pref;
+ private int bgNum;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ addCityIv = findViewById(R.id.main_iv_add);
+ moreIv = findViewById(R.id.main_iv_more);
+ pointLayout = findViewById(R.id.main_layout_point);
+ outLayout = findViewById(R.id.main_out_layout);
+ exchangeBg();
+ mainVp = findViewById(R.id.main_vp);
+// 添加点击事件
+ addCityIv.setOnClickListener(this);
+ moreIv.setOnClickListener(this);
+
+ fragmentList = new ArrayList<>();
+// cityList = new ArrayList<>();
+ cityList = DBManager.queryAllCityName(); //获取数据库包含的城市信息列表
+ imgList = new ArrayList<>();
+
+ if (cityList.size()==0) {
+ cityList.add("北京");
+// cityList.add("上海");
+// cityList.add("广东省 广州");
+// cityList.add("广东省 深圳");
+// cityList.add("福建省 厦门");
+ }
+ /* 因为可能搜索界面点击跳转此界面,会传值,所以此处获取一下*/
+ try {
+ Intent intent = getIntent();
+ String city = intent.getStringExtra("city");
+ if (!cityList.contains(city)&&!TextUtils.isEmpty(city)) {
+ cityList.add(city);
+ }
+ }catch (Exception e){
+ Log.i("animee","程序出现问题了!!");
+ }//输出提示性信息,日志
+// 初始化ViewPager页面的方法
+ initPager();
+ adapter = new CityFragmentPagerAdapter(getSupportFragmentManager(), fragmentList);
+ mainVp.setAdapter(adapter);
+// 创建小圆点指示器
+ initPoint();
+// 设置最后一个城市信息
+ mainVp.setCurrentItem(fragmentList.size()-1);
+// 设置ViewPager页面监听(页面变动小圆点也随之改变)
+ setPagerListener();
+ }
+
+
+ // 换壁纸的函数
+ public void exchangeBg(){
+ pref = getSharedPreferences("bg_pref", MODE_PRIVATE);
+ bgNum = pref.getInt("bg", 2);
+ switch (bgNum) {
+ case 0:
+ outLayout.setBackgroundResource(R.mipmap.bg);
+ break;
+ case 1:
+ outLayout.setBackgroundResource(R.mipmap.bg2);
+ break;
+ case 2:
+ outLayout.setBackgroundResource(R.mipmap.bg3);
+ break;
+ }
+
+ }
+ private void setPagerListener() {
+ /* 设置监听事件*/
+ mainVp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ }
+ @Override
+ public void onPageSelected(int position) {
+ for (int i = 0; i < imgList.size(); i++) {
+ imgList.get(i).setImageResource(R.mipmap.a1);
+ }
+ imgList.get(position).setImageResource(R.mipmap.a2);
+ }
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ }
+ });
+ }
+
+ private void initPoint() {
+// 创建小圆点 ViewPager页面指示器的函数
+ for (int i = 0; i < fragmentList.size(); i++) {
+ ImageView pIv = new ImageView(this);
+ pIv.setImageResource(R.mipmap.a1);
+ pIv.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
+ LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) pIv.getLayoutParams();
+ lp.setMargins(0,0,20,0);
+ imgList.add(pIv);
+ pointLayout.addView(pIv);
+ }
+ imgList.get(imgList.size()-1).setImageResource(R.mipmap.a2);
+ }
+
+ private void initPager() {
+ /* 创建Fragment对象,添加到ViewPager数据源当中*/
+ for (int i = 0; i < cityList.size(); i++) {
+ CityWeatherFragment cwFrag = new CityWeatherFragment();
+ Bundle bundle = new Bundle();
+ bundle.putString("city",cityList.get(i));
+ //传值
+ cwFrag.setArguments(bundle);
+ fragmentList.add(cwFrag);
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ Intent intent = new Intent();
+ switch (v.getId()) {
+ case R.id.main_iv_add:
+ intent.setClass(this, CityManagerActivity.class);
+ break;
+ case R.id.main_iv_more:
+ intent.setClass(this,MoreActivity.class);
+ break;
+ }
+ startActivity(intent);
+ }
+
+ /* 当页面重写加载时会调用的函数,这个函数在页面获取焦点之前进行调用,此处完成ViewPager页数的更新*/
+ @Override
+ protected void onRestart() {
+ super.onRestart();
+// 获取数据库当中还剩下的城市集合
+ List list = DBManager.queryAllCityName();
+ if (list.size()==0) {
+ list.add("北京");
+ }
+ cityList.clear(); //重写加载之前,清空原本数据源
+ cityList.addAll(list);
+// 剩余城市也要创建对应的fragment页面
+ fragmentList.clear();
+ initPager();
+ adapter.notifyDataSetChanged();
+// 页面数量发生改变,指示器的数量也会发生变化,重写设置添加指示器
+ imgList.clear();
+ pointLayout.removeAllViews(); //将布局当中所有元素全部移除
+ initPoint();
+ mainVp.setCurrentItem(fragmentList.size()-1);
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/MoreActivity.java b/app/src/main/java/com/example/myapplication/MoreActivity.java
new file mode 100644
index 0000000..898de67
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/MoreActivity.java
@@ -0,0 +1,171 @@
+package com.example.myapplication;
+
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.RadioGroup;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.example.myapplication.db.DBManager;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+
+public class MoreActivity extends AppCompatActivity implements View.OnClickListener{
+ TextView bgTv,cacheTv,versionTv,shareTv,musicTV,aiTV;
+ RadioGroup exbgRg;
+ ImageView backIv;
+ private SharedPreferences pref;
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_more);
+ bgTv = findViewById(R.id.more_tv_exchangebg);
+ cacheTv = findViewById(R.id.more_tv_cache);
+ versionTv = findViewById(R.id.more_tv_version);
+ shareTv = findViewById(R.id.more_tv_share);
+ musicTV = findViewById(R.id.more_music);
+ aiTV = findViewById(R.id.more_tv_ai);
+
+ backIv = findViewById(R.id.more_iv_back);
+ exbgRg = findViewById(R.id.more_rg);
+
+ bgTv.setOnClickListener(this);
+ cacheTv.setOnClickListener(this);
+ shareTv.setOnClickListener(this);
+ backIv.setOnClickListener(this);
+ musicTV.setOnClickListener(this);
+ aiTV.setOnClickListener(this);
+
+ pref = getSharedPreferences("bg_pref", MODE_PRIVATE);
+ String versionName = getVersionName();
+ versionTv.setText("当前版本: v"+"2.0");
+ setRGListener();
+ }
+
+ private void setRGListener() {
+ /* 设置改变背景图片的单选按钮的监听*/
+ exbgRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(RadioGroup group, int checkedId) {
+// 获取目前的默认壁纸
+ int bg = pref.getInt("bg", 0);
+ SharedPreferences.Editor editor = pref.edit();
+ Intent intent = new Intent(MoreActivity.this,MainActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
+ switch (checkedId) {
+ case R.id.more_rb_green:
+ if (bg==0) {
+ Toast.makeText(MoreActivity.this,"您选择的为当前背景,无需改变!",Toast.LENGTH_SHORT).show();
+ return;
+ }
+ editor.putInt("bg",0);
+ editor.commit();
+ break;
+ case R.id.more_rb_pink:
+ if (bg==1) {
+ Toast.makeText(MoreActivity.this,"您选择的为当前背景,无需改变!",Toast.LENGTH_SHORT).show();
+ return;
+ }
+ editor.putInt("bg",1);
+ editor.commit();
+ break;
+ case R.id.more_rb_blue:
+ if (bg==2) {
+ Toast.makeText(MoreActivity.this,"您选择的为当前背景,无需改变!",Toast.LENGTH_SHORT).show();
+ return;
+ }
+ editor.putInt("bg",2);
+ editor.commit();
+ break;
+ }
+ startActivity(intent);
+ }
+ });
+
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.more_iv_back:
+ finish();
+ break;
+ case R.id.more_tv_cache:
+ clearCache();
+ break;
+ case R.id.more_tv_share:
+ shareSoftwareMsg("天气预报app是一款超萌超可爱的天气预报软件,画面简约,播报天气情况非常精准,快来下载吧!");
+ break;
+ case R.id.more_tv_exchangebg:
+ if (exbgRg.getVisibility() == View.VISIBLE) {
+ exbgRg.setVisibility(View.GONE);
+ }else{
+ exbgRg.setVisibility(View.VISIBLE);
+ }
+ break;
+ case R.id.more_music:
+ startAi();
+ break;
+ case R.id.more_tv_ai:
+ startBgm();
+ break;
+ }
+ }
+
+ private void shareSoftwareMsg(String s) {
+ /* 分享软件的函数*/
+ Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.setType("text/plain");
+ intent.putExtra(Intent.EXTRA_TEXT,s);
+ startActivity(Intent.createChooser(intent,"天气预报"));
+ }
+
+ private void clearCache() {
+ /* 清除缓存的函数*/
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("提示信息").setMessage("确定要删除所有缓存么?");
+ builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ DBManager.deleteAllInfo();
+ Toast.makeText(MoreActivity.this,"已清除全部缓存!",Toast.LENGTH_SHORT).show();
+ Intent intent = new Intent(MoreActivity.this, MainActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+ }).setNegativeButton("取消",null);
+ builder.create().show();
+ }
+
+ private void startBgm(){
+ Intent intent = new Intent();
+
+ }
+
+ private void startAi(){
+
+ }
+ public String getVersionName() {
+ /* 获取应用的版本名称*/
+ PackageManager manager = getPackageManager();
+ String versionName = null;
+ try {
+ PackageInfo info = manager.getPackageInfo(getPackageName(), 0);
+ versionName = info.versionName;
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return versionName;
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/Test.java b/app/src/main/java/com/example/myapplication/Test.java
new file mode 100644
index 0000000..470225f
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/Test.java
@@ -0,0 +1,16 @@
+package com.example.myapplication;
+
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+public class Test {
+ public static void main(String arg[]) throws ParseException {
+ String str="202009222245";
+ SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMddHHmm");
+ SimpleDateFormat sf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String sfstr = "";
+ sfstr = sf2.format(sf1.parse(str));
+ System.out.println(sfstr);
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/base/BaseActivity.java b/app/src/main/java/com/example/myapplication/base/BaseActivity.java
new file mode 100644
index 0000000..837ec9b
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/base/BaseActivity.java
@@ -0,0 +1,35 @@
+package com.example.myapplication.base;
+
+
+import org.xutils.common.Callback;
+import org.xutils.http.RequestParams;
+import org.xutils.x;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+public class BaseActivity extends AppCompatActivity implements Callback.CommonCallback{
+
+ public void loadData(String url){
+ RequestParams params = new RequestParams(url);
+ x.http().get(params,this);
+ }
+ @Override
+ public void onSuccess(String result) {
+
+ }
+
+ @Override
+ public void onError(Throwable ex, boolean isOnCallback) {
+
+ }
+
+ @Override
+ public void onCancelled(CancelledException cex) {
+
+ }
+
+ @Override
+ public void onFinished() {
+
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/base/BaseFragment.java b/app/src/main/java/com/example/myapplication/base/BaseFragment.java
new file mode 100644
index 0000000..2d7ec19
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/base/BaseFragment.java
@@ -0,0 +1,39 @@
+package com.example.myapplication.base;
+
+
+import org.xutils.common.Callback;
+import org.xutils.http.RequestParams;
+import org.xutils.x;
+import androidx.fragment.app.Fragment;
+
+/*xutils加载网络数据的步骤
+* 1.声明整体模块
+* 2.执行网络请求操作
+* */
+public class BaseFragment extends Fragment implements Callback.CommonCallback{
+
+ public void loadData(String path){
+ RequestParams params = new RequestParams(path);
+ x.http().get(params,this);
+ }
+// 获取数据成功时,会回调的接口
+ @Override
+ public void onSuccess(String result) {
+
+ }
+// 获取数据失败时,会调用的接口
+ @Override
+ public void onError(Throwable ex, boolean isOnCallback) {
+
+ }
+// 取消请求时,会调用的接口
+ @Override
+ public void onCancelled(CancelledException cex) {
+
+ }
+// 请求完成后,会回调的接口
+ @Override
+ public void onFinished() {
+
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/base/UniteApp.java b/app/src/main/java/com/example/myapplication/base/UniteApp.java
new file mode 100644
index 0000000..1509fde
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/base/UniteApp.java
@@ -0,0 +1,15 @@
+package com.example.myapplication.base;
+
+import android.app.Application;
+import com.example.myapplication.db.DBManager;
+import org.xutils.x;
+
+public class UniteApp extends Application {
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ x.Ext.init(this);
+ DBManager.initDB(this);
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/bean/WeatherBean.java b/app/src/main/java/com/example/myapplication/bean/WeatherBean.java
new file mode 100644
index 0000000..a88db3e
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/bean/WeatherBean.java
@@ -0,0 +1,3583 @@
+package com.example.myapplication.bean;
+
+
+import com.google.gson.annotations.SerializedName;
+
+public class WeatherBean {
+
+ /**
+ * data : {"air":{"aqi":39,"aqi_level":1,"aqi_name":"优","co":"0.8","no2":"44","o3":"40","pm10":"39","pm2.5":"17","so2":"6","update_time":"20200923000000"},"alarm":{},"forecast_24h":{"0":{"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"},"1":{"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"},"2":{"day_weather":"中雨","day_weather_code":"08","day_weather_short":"中雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"25","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-23"},"3":{"day_weather":"阵雨","day_weather_code":"03","day_weather_short":"阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"30","min_degree":"24","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-24"},"4":{"day_weather":"多云","day_weather_code":"01","day_weather_short":"多云","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"25","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-25"},"5":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-26"},"6":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"31","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-27"},"7":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"27","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-28"}},"index":{"airconditioner":{"detail":"您将感到些燥热,建议您在适当的时候开启制冷空调来降低温度,以免中暑。","info":"部分时间开启","name":"空调开启"},"allergy":{"detail":"天气条件较易诱发过敏,有降水,最好穿长衣长裤,预防感冒可能引发的过敏。","info":"较易发","name":"过敏"},"carwash":{"detail":"不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。","info":"不宜","name":"洗车"},"chill":{"detail":"温度未达到风寒所需的低温,稍作防寒准备即可。","info":"无","name":"风寒"},"clothes":{"detail":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","info":"炎热","name":"穿衣"},"cold":{"detail":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。","info":"少发","name":"感冒"},"comfort":{"detail":"白天虽然天气以阴为主,但由于天热,加上湿度较大,您会感到很闷热,很不舒适。","info":"很不舒适","name":"舒适度"},"diffusion":{"detail":"气象条件有利于空气污染物稀释、扩散和清除。","info":"良","name":"空气污染扩散条件"},"dry":{"detail":"有降水,路面潮湿,车辆易打滑,请小心驾驶。","info":"潮湿","name":"路况"},"drying":{"detail":"有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。","info":"不宜","name":"晾晒"},"fish":{"detail":"天气不好,有风,不适合垂钓。","info":"不宜","name":"钓鱼"},"heatstroke":{"detail":"桑拿天突然\u201c驾到\u201d,小心\u201c情绪中暑\u201d~","info":"易发","name":"中暑"},"makeup":{"detail":"天气较热,易出汗,建议使用防脱水化妆品,少用粉底和胭脂,经常补粉。","info":"防脱水","name":"化妆"},"mood":{"detail":"有降水,雨水不仅给大地带来了一丝清凉,也可让较高气温带来的烦躁心绪降降温。","info":"较差","name":"心情"},"morning":{"detail":"有降水,且风力稍大,请尽量避免户外晨练,若坚持晨练请带上雨具。","info":"不宜","name":"晨练"},"sports":{"detail":"有降水,推荐您在室内进行低强度运动;若坚持户外运动,请选择合适的运动,并携带雨具。","info":"较不宜","name":"运动"},"sunglasses":{"detail":"白天有降水天气,视线较差,不需要佩戴太阳镜","info":"不需要","name":"太阳镜"},"sunscreen":{"detail":"属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"弱","name":"防晒"},"time":"20200922","tourism":{"detail":"较热,微风,有降水,请尽量不要外出,若外出,请注意防雷并携带雨具,注意防暑降温。","info":"一般","name":"旅游"},"traffic":{"detail":"有降水,路面湿滑,刹车距离延长,事故易发期,注意车距,务必小心驾驶。","info":"一般","name":"交通"},"ultraviolet":{"detail":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"最弱","name":"紫外线强度"},"umbrella":{"detail":"有降水,如果您要短时间外出的话可不必带雨伞。","info":"带伞","name":"雨伞"}},"observe":{"degree":"28","humidity":"87","precipitation":"0.0","pressure":"1006","update_time":"202009230045","weather":"晴","weather_code":"00","weather_short":"晴","wind_direction":"5","wind_power":"1"},"rise":{"0":{"sunrise":"06:16","sunset":"18:22","time":"20200923"},"1":{"sunrise":"06:16","sunset":"18:21","time":"20200924"},"10":{"sunrise":"06:19","sunset":"18:12","time":"20201003"},"11":{"sunrise":"06:19","sunset":"18:11","time":"20201004"},"12":{"sunrise":"06:20","sunset":"18:10","time":"20201005"},"13":{"sunrise":"06:20","sunset":"18:09","time":"20201006"},"14":{"sunrise":"06:20","sunset":"18:08","time":"20201007"},"15":{"sunrise":"","sunset":"","time":"20200922"},"2":{"sunrise":"06:16","sunset":"18:20","time":"20200925"},"3":{"sunrise":"06:16","sunset":"18:19","time":"20200926"},"4":{"sunrise":"06:17","sunset":"18:18","time":"20200927"},"5":{"sunrise":"06:17","sunset":"18:17","time":"20200928"},"6":{"sunrise":"06:17","sunset":"18:16","time":"20200929"},"7":{"sunrise":"06:18","sunset":"18:15","time":"20200930"},"8":{"sunrise":"06:18","sunset":"18:14","time":"20201001"},"9":{"sunrise":"06:18","sunset":"18:13","time":"20201002"}},"tips":{"observe":{"0":"你若安好,便是晴天~","1":"现在的温度比较舒适~"}}}
+ * message : OK
+ * status : 200
+ */
+
+ private DataBean data;
+ private String message;
+ private int status;
+
+ public DataBean getData() {
+ return data;
+ }
+
+ public void setData(DataBean data) {
+ this.data = data;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public static class DataBean {
+ /**
+ * air : {"aqi":39,"aqi_level":1,"aqi_name":"优","co":"0.8","no2":"44","o3":"40","pm10":"39","pm2.5":"17","so2":"6","update_time":"20200923000000"}
+ * alarm : {}
+ * forecast_24h : {"0":{"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"},"1":{"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"},"2":{"day_weather":"中雨","day_weather_code":"08","day_weather_short":"中雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"25","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-23"},"3":{"day_weather":"阵雨","day_weather_code":"03","day_weather_short":"阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"30","min_degree":"24","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-24"},"4":{"day_weather":"多云","day_weather_code":"01","day_weather_short":"多云","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"25","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-25"},"5":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-26"},"6":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"31","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-27"},"7":{"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"27","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-28"}}
+ * index : {"airconditioner":{"detail":"您将感到些燥热,建议您在适当的时候开启制冷空调来降低温度,以免中暑。","info":"部分时间开启","name":"空调开启"},"allergy":{"detail":"天气条件较易诱发过敏,有降水,最好穿长衣长裤,预防感冒可能引发的过敏。","info":"较易发","name":"过敏"},"carwash":{"detail":"不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。","info":"不宜","name":"洗车"},"chill":{"detail":"温度未达到风寒所需的低温,稍作防寒准备即可。","info":"无","name":"风寒"},"clothes":{"detail":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","info":"炎热","name":"穿衣"},"cold":{"detail":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。","info":"少发","name":"感冒"},"comfort":{"detail":"白天虽然天气以阴为主,但由于天热,加上湿度较大,您会感到很闷热,很不舒适。","info":"很不舒适","name":"舒适度"},"diffusion":{"detail":"气象条件有利于空气污染物稀释、扩散和清除。","info":"良","name":"空气污染扩散条件"},"dry":{"detail":"有降水,路面潮湿,车辆易打滑,请小心驾驶。","info":"潮湿","name":"路况"},"drying":{"detail":"有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。","info":"不宜","name":"晾晒"},"fish":{"detail":"天气不好,有风,不适合垂钓。","info":"不宜","name":"钓鱼"},"heatstroke":{"detail":"桑拿天突然\u201c驾到\u201d,小心\u201c情绪中暑\u201d~","info":"易发","name":"中暑"},"makeup":{"detail":"天气较热,易出汗,建议使用防脱水化妆品,少用粉底和胭脂,经常补粉。","info":"防脱水","name":"化妆"},"mood":{"detail":"有降水,雨水不仅给大地带来了一丝清凉,也可让较高气温带来的烦躁心绪降降温。","info":"较差","name":"心情"},"morning":{"detail":"有降水,且风力稍大,请尽量避免户外晨练,若坚持晨练请带上雨具。","info":"不宜","name":"晨练"},"sports":{"detail":"有降水,推荐您在室内进行低强度运动;若坚持户外运动,请选择合适的运动,并携带雨具。","info":"较不宜","name":"运动"},"sunglasses":{"detail":"白天有降水天气,视线较差,不需要佩戴太阳镜","info":"不需要","name":"太阳镜"},"sunscreen":{"detail":"属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"弱","name":"防晒"},"time":"20200922","tourism":{"detail":"较热,微风,有降水,请尽量不要外出,若外出,请注意防雷并携带雨具,注意防暑降温。","info":"一般","name":"旅游"},"traffic":{"detail":"有降水,路面湿滑,刹车距离延长,事故易发期,注意车距,务必小心驾驶。","info":"一般","name":"交通"},"ultraviolet":{"detail":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"最弱","name":"紫外线强度"},"umbrella":{"detail":"有降水,如果您要短时间外出的话可不必带雨伞。","info":"带伞","name":"雨伞"}}
+ * observe : {"degree":"28","humidity":"87","precipitation":"0.0","pressure":"1006","update_time":"202009230045","weather":"晴","weather_code":"00","weather_short":"晴","wind_direction":"5","wind_power":"1"}
+ * rise : {"0":{"sunrise":"06:16","sunset":"18:22","time":"20200923"},"1":{"sunrise":"06:16","sunset":"18:21","time":"20200924"},"10":{"sunrise":"06:19","sunset":"18:12","time":"20201003"},"11":{"sunrise":"06:19","sunset":"18:11","time":"20201004"},"12":{"sunrise":"06:20","sunset":"18:10","time":"20201005"},"13":{"sunrise":"06:20","sunset":"18:09","time":"20201006"},"14":{"sunrise":"06:20","sunset":"18:08","time":"20201007"},"15":{"sunrise":"","sunset":"","time":"20200922"},"2":{"sunrise":"06:16","sunset":"18:20","time":"20200925"},"3":{"sunrise":"06:16","sunset":"18:19","time":"20200926"},"4":{"sunrise":"06:17","sunset":"18:18","time":"20200927"},"5":{"sunrise":"06:17","sunset":"18:17","time":"20200928"},"6":{"sunrise":"06:17","sunset":"18:16","time":"20200929"},"7":{"sunrise":"06:18","sunset":"18:15","time":"20200930"},"8":{"sunrise":"06:18","sunset":"18:14","time":"20201001"},"9":{"sunrise":"06:18","sunset":"18:13","time":"20201002"}}
+ * tips : {"observe":{"0":"你若安好,便是晴天~","1":"现在的温度比较舒适~"}}
+ */
+
+ private AirBean air;
+ private AlarmBean alarm;
+ private Forecast24hBean forecast_24h;
+ private IndexBean index;
+ private ObserveBean observe;
+ private RiseBean rise;
+ private TipsBean tips;
+
+ public AirBean getAir() {
+ return air;
+ }
+
+ public void setAir(AirBean air) {
+ this.air = air;
+ }
+
+ public AlarmBean getAlarm() {
+ return alarm;
+ }
+
+ public void setAlarm(AlarmBean alarm) {
+ this.alarm = alarm;
+ }
+
+ public Forecast24hBean getForecast_24h() {
+ return forecast_24h;
+ }
+
+ public void setForecast_24h(Forecast24hBean forecast_24h) {
+ this.forecast_24h = forecast_24h;
+ }
+
+ public IndexBean getIndex() {
+ return index;
+ }
+
+ public void setIndex(IndexBean index) {
+ this.index = index;
+ }
+
+ public ObserveBean getObserve() {
+ return observe;
+ }
+
+ public void setObserve(ObserveBean observe) {
+ this.observe = observe;
+ }
+
+ public RiseBean getRise() {
+ return rise;
+ }
+
+ public void setRise(RiseBean rise) {
+ this.rise = rise;
+ }
+
+ public TipsBean getTips() {
+ return tips;
+ }
+
+ public void setTips(TipsBean tips) {
+ this.tips = tips;
+ }
+
+ public static class AirBean {
+ /**
+ * aqi : 39
+ * aqi_level : 1
+ * aqi_name : 优
+ * co : 0.8
+ * no2 : 44
+ * o3 : 40
+ * pm10 : 39
+ * pm2.5 : 17
+ * so2 : 6
+ * update_time : 20200923000000
+ */
+
+ private int aqi;
+
+ public int getAqi() {
+ return aqi;
+ }
+
+ public void setAqi(int aqi) {
+ this.aqi = aqi;
+ }
+ }
+
+ public static class AlarmBean {
+ }
+
+ public static class Forecast24hBean {
+ /**
+ * 0 : {"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"}
+ * 1 : {"day_weather":"阴","day_weather_code":"02","day_weather_short":"阴","day_wind_direction":"东南风","day_wind_direction_code":"3","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"26","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-22"}
+ * 2 : {"day_weather":"中雨","day_weather_code":"08","day_weather_short":"中雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"25","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-23"}
+ * 3 : {"day_weather":"阵雨","day_weather_code":"03","day_weather_short":"阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"30","min_degree":"24","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-24"}
+ * 4 : {"day_weather":"多云","day_weather_code":"01","day_weather_short":"多云","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"33","min_degree":"25","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-25"}
+ * 5 : {"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-26"}
+ * 6 : {"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"31","min_degree":"26","night_weather":"雷阵雨","night_weather_code":"04","night_weather_short":"雷阵雨","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-27"}
+ * 7 : {"day_weather":"雷阵雨","day_weather_code":"04","day_weather_short":"雷阵雨","day_wind_direction":"微风","day_wind_direction_code":"0","day_wind_power":"3","day_wind_power_code":"0","max_degree":"32","min_degree":"27","night_weather":"多云","night_weather_code":"01","night_weather_short":"多云","night_wind_direction":"微风","night_wind_direction_code":"0","night_wind_power":"3","night_wind_power_code":"0","time":"2020-09-28"}
+ */
+
+ @SerializedName("0")
+ private _$0Bean _$0;
+ @SerializedName("1")
+ private _$1Bean _$1;
+ @SerializedName("2")
+ private _$2Bean _$2;
+ @SerializedName("3")
+ private _$3Bean _$3;
+ @SerializedName("4")
+ private _$4Bean _$4;
+ @SerializedName("5")
+ private _$5Bean _$5;
+ @SerializedName("6")
+ private _$6Bean _$6;
+ @SerializedName("7")
+ private _$7Bean _$7;
+
+ public _$0Bean get_$0() {
+ return _$0;
+ }
+
+ public void set_$0(_$0Bean _$0) {
+ this._$0 = _$0;
+ }
+
+ public _$1Bean get_$1() {
+ return _$1;
+ }
+
+ public void set_$1(_$1Bean _$1) {
+ this._$1 = _$1;
+ }
+
+ public _$2Bean get_$2() {
+ return _$2;
+ }
+
+ public void set_$2(_$2Bean _$2) {
+ this._$2 = _$2;
+ }
+
+ public _$3Bean get_$3() {
+ return _$3;
+ }
+
+ public void set_$3(_$3Bean _$3) {
+ this._$3 = _$3;
+ }
+
+ public _$4Bean get_$4() {
+ return _$4;
+ }
+
+ public void set_$4(_$4Bean _$4) {
+ this._$4 = _$4;
+ }
+
+ public _$5Bean get_$5() {
+ return _$5;
+ }
+
+ public void set_$5(_$5Bean _$5) {
+ this._$5 = _$5;
+ }
+
+ public _$6Bean get_$6() {
+ return _$6;
+ }
+
+ public void set_$6(_$6Bean _$6) {
+ this._$6 = _$6;
+ }
+
+ public _$7Bean get_$7() {
+ return _$7;
+ }
+
+ public void set_$7(_$7Bean _$7) {
+ this._$7 = _$7;
+ }
+
+ public static class _$0Bean {
+ /**
+ * day_weather : 阴
+ * day_weather_code : 02
+ * day_weather_short : 阴
+ * day_wind_direction : 东南风
+ * day_wind_direction_code : 3
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 33
+ * min_degree : 26
+ * night_weather : 多云
+ * night_weather_code : 01
+ * night_weather_short : 多云
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-22
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$1Bean {
+ /**
+ * day_weather : 阴
+ * day_weather_code : 02
+ * day_weather_short : 阴
+ * day_wind_direction : 东南风
+ * day_wind_direction_code : 3
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 33
+ * min_degree : 26
+ * night_weather : 多云
+ * night_weather_code : 01
+ * night_weather_short : 多云
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-22
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$2Bean {
+ /**
+ * day_weather : 中雨
+ * day_weather_code : 08
+ * day_weather_short : 中雨
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 32
+ * min_degree : 25
+ * night_weather : 雷阵雨
+ * night_weather_code : 04
+ * night_weather_short : 雷阵雨
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-23
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$3Bean {
+ /**
+ * day_weather : 阵雨
+ * day_weather_code : 03
+ * day_weather_short : 阵雨
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 30
+ * min_degree : 24
+ * night_weather : 多云
+ * night_weather_code : 01
+ * night_weather_short : 多云
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-24
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$4Bean {
+ /**
+ * day_weather : 多云
+ * day_weather_code : 01
+ * day_weather_short : 多云
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 33
+ * min_degree : 25
+ * night_weather : 多云
+ * night_weather_code : 01
+ * night_weather_short : 多云
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-25
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$5Bean {
+ /**
+ * day_weather : 雷阵雨
+ * day_weather_code : 04
+ * day_weather_short : 雷阵雨
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 32
+ * min_degree : 26
+ * night_weather : 雷阵雨
+ * night_weather_code : 04
+ * night_weather_short : 雷阵雨
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-26
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$6Bean {
+ /**
+ * day_weather : 雷阵雨
+ * day_weather_code : 04
+ * day_weather_short : 雷阵雨
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 31
+ * min_degree : 26
+ * night_weather : 雷阵雨
+ * night_weather_code : 04
+ * night_weather_short : 雷阵雨
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-27
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$7Bean {
+ /**
+ * day_weather : 雷阵雨
+ * day_weather_code : 04
+ * day_weather_short : 雷阵雨
+ * day_wind_direction : 微风
+ * day_wind_direction_code : 0
+ * day_wind_power : 3
+ * day_wind_power_code : 0
+ * max_degree : 32
+ * min_degree : 27
+ * night_weather : 多云
+ * night_weather_code : 01
+ * night_weather_short : 多云
+ * night_wind_direction : 微风
+ * night_wind_direction_code : 0
+ * night_wind_power : 3
+ * night_wind_power_code : 0
+ * time : 2020-09-28
+ */
+
+ private String day_weather;
+ private String day_weather_code;
+ private String day_weather_short;
+ private String day_wind_direction;
+ private String day_wind_direction_code;
+ private String day_wind_power;
+ private String day_wind_power_code;
+ private String max_degree;
+ private String min_degree;
+ private String night_weather;
+ private String night_weather_code;
+ private String night_weather_short;
+ private String night_wind_direction;
+ private String night_wind_direction_code;
+ private String night_wind_power;
+ private String night_wind_power_code;
+ private String time;
+
+ public String getDay_weather() {
+ return day_weather;
+ }
+
+ public void setDay_weather(String day_weather) {
+ this.day_weather = day_weather;
+ }
+
+ public String getDay_weather_code() {
+ return day_weather_code;
+ }
+
+ public void setDay_weather_code(String day_weather_code) {
+ this.day_weather_code = day_weather_code;
+ }
+
+ public String getDay_weather_short() {
+ return day_weather_short;
+ }
+
+ public void setDay_weather_short(String day_weather_short) {
+ this.day_weather_short = day_weather_short;
+ }
+
+ public String getDay_wind_direction() {
+ return day_wind_direction;
+ }
+
+ public void setDay_wind_direction(String day_wind_direction) {
+ this.day_wind_direction = day_wind_direction;
+ }
+
+ public String getDay_wind_direction_code() {
+ return day_wind_direction_code;
+ }
+
+ public void setDay_wind_direction_code(String day_wind_direction_code) {
+ this.day_wind_direction_code = day_wind_direction_code;
+ }
+
+ public String getDay_wind_power() {
+ return day_wind_power;
+ }
+
+ public void setDay_wind_power(String day_wind_power) {
+ this.day_wind_power = day_wind_power;
+ }
+
+ public String getDay_wind_power_code() {
+ return day_wind_power_code;
+ }
+
+ public void setDay_wind_power_code(String day_wind_power_code) {
+ this.day_wind_power_code = day_wind_power_code;
+ }
+
+ public String getMax_degree() {
+ return max_degree;
+ }
+
+ public void setMax_degree(String max_degree) {
+ this.max_degree = max_degree;
+ }
+
+ public String getMin_degree() {
+ return min_degree;
+ }
+
+ public void setMin_degree(String min_degree) {
+ this.min_degree = min_degree;
+ }
+
+ public String getNight_weather() {
+ return night_weather;
+ }
+
+ public void setNight_weather(String night_weather) {
+ this.night_weather = night_weather;
+ }
+
+ public String getNight_weather_code() {
+ return night_weather_code;
+ }
+
+ public void setNight_weather_code(String night_weather_code) {
+ this.night_weather_code = night_weather_code;
+ }
+
+ public String getNight_weather_short() {
+ return night_weather_short;
+ }
+
+ public void setNight_weather_short(String night_weather_short) {
+ this.night_weather_short = night_weather_short;
+ }
+
+ public String getNight_wind_direction() {
+ return night_wind_direction;
+ }
+
+ public void setNight_wind_direction(String night_wind_direction) {
+ this.night_wind_direction = night_wind_direction;
+ }
+
+ public String getNight_wind_direction_code() {
+ return night_wind_direction_code;
+ }
+
+ public void setNight_wind_direction_code(String night_wind_direction_code) {
+ this.night_wind_direction_code = night_wind_direction_code;
+ }
+
+ public String getNight_wind_power() {
+ return night_wind_power;
+ }
+
+ public void setNight_wind_power(String night_wind_power) {
+ this.night_wind_power = night_wind_power;
+ }
+
+ public String getNight_wind_power_code() {
+ return night_wind_power_code;
+ }
+
+ public void setNight_wind_power_code(String night_wind_power_code) {
+ this.night_wind_power_code = night_wind_power_code;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+ }
+
+ public static class IndexBean {
+ /**
+ * airconditioner : {"detail":"您将感到些燥热,建议您在适当的时候开启制冷空调来降低温度,以免中暑。","info":"部分时间开启","name":"空调开启"}
+ * allergy : {"detail":"天气条件较易诱发过敏,有降水,最好穿长衣长裤,预防感冒可能引发的过敏。","info":"较易发","name":"过敏"}
+ * carwash : {"detail":"不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。","info":"不宜","name":"洗车"}
+ * chill : {"detail":"温度未达到风寒所需的低温,稍作防寒准备即可。","info":"无","name":"风寒"}
+ * clothes : {"detail":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","info":"炎热","name":"穿衣"}
+ * cold : {"detail":"各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。","info":"少发","name":"感冒"}
+ * comfort : {"detail":"白天虽然天气以阴为主,但由于天热,加上湿度较大,您会感到很闷热,很不舒适。","info":"很不舒适","name":"舒适度"}
+ * diffusion : {"detail":"气象条件有利于空气污染物稀释、扩散和清除。","info":"良","name":"空气污染扩散条件"}
+ * dry : {"detail":"有降水,路面潮湿,车辆易打滑,请小心驾驶。","info":"潮湿","name":"路况"}
+ * drying : {"detail":"有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。","info":"不宜","name":"晾晒"}
+ * fish : {"detail":"天气不好,有风,不适合垂钓。","info":"不宜","name":"钓鱼"}
+ * heatstroke : {"detail":"桑拿天突然\u201c驾到\u201d,小心\u201c情绪中暑\u201d~","info":"易发","name":"中暑"}
+ * makeup : {"detail":"天气较热,易出汗,建议使用防脱水化妆品,少用粉底和胭脂,经常补粉。","info":"防脱水","name":"化妆"}
+ * mood : {"detail":"有降水,雨水不仅给大地带来了一丝清凉,也可让较高气温带来的烦躁心绪降降温。","info":"较差","name":"心情"}
+ * morning : {"detail":"有降水,且风力稍大,请尽量避免户外晨练,若坚持晨练请带上雨具。","info":"不宜","name":"晨练"}
+ * sports : {"detail":"有降水,推荐您在室内进行低强度运动;若坚持户外运动,请选择合适的运动,并携带雨具。","info":"较不宜","name":"运动"}
+ * sunglasses : {"detail":"白天有降水天气,视线较差,不需要佩戴太阳镜","info":"不需要","name":"太阳镜"}
+ * sunscreen : {"detail":"属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"弱","name":"防晒"}
+ * time : 20200922
+ * tourism : {"detail":"较热,微风,有降水,请尽量不要外出,若外出,请注意防雷并携带雨具,注意防暑降温。","info":"一般","name":"旅游"}
+ * traffic : {"detail":"有降水,路面湿滑,刹车距离延长,事故易发期,注意车距,务必小心驾驶。","info":"一般","name":"交通"}
+ * ultraviolet : {"detail":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。","info":"最弱","name":"紫外线强度"}
+ * umbrella : {"detail":"有降水,如果您要短时间外出的话可不必带雨伞。","info":"带伞","name":"雨伞"}
+ */
+
+ private AirconditionerBean airconditioner;
+ private AllergyBean allergy;
+ private CarwashBean carwash;
+ private ChillBean chill;
+ private ClothesBean clothes;
+ private ColdBean cold;
+ private ComfortBean comfort;
+ private DiffusionBean diffusion;
+ private DryBean dry;
+ private DryingBean drying;
+ private FishBean fish;
+ private HeatstrokeBean heatstroke;
+ private MakeupBean makeup;
+ private MoodBean mood;
+ private MorningBean morning;
+ private SportsBean sports;
+ private SunglassesBean sunglasses;
+ private SunscreenBean sunscreen;
+ private String time;
+ private TourismBean tourism;
+ private TrafficBean traffic;
+ private UltravioletBean ultraviolet;
+ private UmbrellaBean umbrella;
+
+ public AirconditionerBean getAirconditioner() {
+ return airconditioner;
+ }
+
+ public void setAirconditioner(AirconditionerBean airconditioner) {
+ this.airconditioner = airconditioner;
+ }
+
+ public AllergyBean getAllergy() {
+ return allergy;
+ }
+
+ public void setAllergy(AllergyBean allergy) {
+ this.allergy = allergy;
+ }
+
+ public CarwashBean getCarwash() {
+ return carwash;
+ }
+
+ public void setCarwash(CarwashBean carwash) {
+ this.carwash = carwash;
+ }
+
+ public ChillBean getChill() {
+ return chill;
+ }
+
+ public void setChill(ChillBean chill) {
+ this.chill = chill;
+ }
+
+ public ClothesBean getClothes() {
+ return clothes;
+ }
+
+ public void setClothes(ClothesBean clothes) {
+ this.clothes = clothes;
+ }
+
+ public ColdBean getCold() {
+ return cold;
+ }
+
+ public void setCold(ColdBean cold) {
+ this.cold = cold;
+ }
+
+ public ComfortBean getComfort() {
+ return comfort;
+ }
+
+ public void setComfort(ComfortBean comfort) {
+ this.comfort = comfort;
+ }
+
+ public DiffusionBean getDiffusion() {
+ return diffusion;
+ }
+
+ public void setDiffusion(DiffusionBean diffusion) {
+ this.diffusion = diffusion;
+ }
+
+ public DryBean getDry() {
+ return dry;
+ }
+
+ public void setDry(DryBean dry) {
+ this.dry = dry;
+ }
+
+ public DryingBean getDrying() {
+ return drying;
+ }
+
+ public void setDrying(DryingBean drying) {
+ this.drying = drying;
+ }
+
+ public FishBean getFish() {
+ return fish;
+ }
+
+ public void setFish(FishBean fish) {
+ this.fish = fish;
+ }
+
+ public HeatstrokeBean getHeatstroke() {
+ return heatstroke;
+ }
+
+ public void setHeatstroke(HeatstrokeBean heatstroke) {
+ this.heatstroke = heatstroke;
+ }
+
+ public MakeupBean getMakeup() {
+ return makeup;
+ }
+
+ public void setMakeup(MakeupBean makeup) {
+ this.makeup = makeup;
+ }
+
+ public MoodBean getMood() {
+ return mood;
+ }
+
+ public void setMood(MoodBean mood) {
+ this.mood = mood;
+ }
+
+ public MorningBean getMorning() {
+ return morning;
+ }
+
+ public void setMorning(MorningBean morning) {
+ this.morning = morning;
+ }
+
+ public SportsBean getSports() {
+ return sports;
+ }
+
+ public void setSports(SportsBean sports) {
+ this.sports = sports;
+ }
+
+ public SunglassesBean getSunglasses() {
+ return sunglasses;
+ }
+
+ public void setSunglasses(SunglassesBean sunglasses) {
+ this.sunglasses = sunglasses;
+ }
+
+ public SunscreenBean getSunscreen() {
+ return sunscreen;
+ }
+
+ public void setSunscreen(SunscreenBean sunscreen) {
+ this.sunscreen = sunscreen;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+
+ public TourismBean getTourism() {
+ return tourism;
+ }
+
+ public void setTourism(TourismBean tourism) {
+ this.tourism = tourism;
+ }
+
+ public TrafficBean getTraffic() {
+ return traffic;
+ }
+
+ public void setTraffic(TrafficBean traffic) {
+ this.traffic = traffic;
+ }
+
+ public UltravioletBean getUltraviolet() {
+ return ultraviolet;
+ }
+
+ public void setUltraviolet(UltravioletBean ultraviolet) {
+ this.ultraviolet = ultraviolet;
+ }
+
+ public UmbrellaBean getUmbrella() {
+ return umbrella;
+ }
+
+ public void setUmbrella(UmbrellaBean umbrella) {
+ this.umbrella = umbrella;
+ }
+
+ public static class AirconditionerBean {
+ /**
+ * detail : 您将感到些燥热,建议您在适当的时候开启制冷空调来降低温度,以免中暑。
+ * info : 部分时间开启
+ * name : 空调开启
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class AllergyBean {
+ /**
+ * detail : 天气条件较易诱发过敏,有降水,最好穿长衣长裤,预防感冒可能引发的过敏。
+ * info : 较易发
+ * name : 过敏
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class CarwashBean {
+ /**
+ * detail : 不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。
+ * info : 不宜
+ * name : 洗车
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class ChillBean {
+ /**
+ * detail : 温度未达到风寒所需的低温,稍作防寒准备即可。
+ * info : 无
+ * name : 风寒
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class ClothesBean {
+ /**
+ * detail : 天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。
+ * info : 炎热
+ * name : 穿衣
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class ColdBean {
+ /**
+ * detail : 各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。
+ * info : 少发
+ * name : 感冒
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class ComfortBean {
+ /**
+ * detail : 白天虽然天气以阴为主,但由于天热,加上湿度较大,您会感到很闷热,很不舒适。
+ * info : 很不舒适
+ * name : 舒适度
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class DiffusionBean {
+ /**
+ * detail : 气象条件有利于空气污染物稀释、扩散和清除。
+ * info : 良
+ * name : 空气污染扩散条件
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class DryBean {
+ /**
+ * detail : 有降水,路面潮湿,车辆易打滑,请小心驾驶。
+ * info : 潮湿
+ * name : 路况
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class DryingBean {
+ /**
+ * detail : 有降水,不适宜晾晒。若需要晾晒,请在室内准备出充足的空间。
+ * info : 不宜
+ * name : 晾晒
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class FishBean {
+ /**
+ * detail : 天气不好,有风,不适合垂钓。
+ * info : 不宜
+ * name : 钓鱼
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class HeatstrokeBean {
+ /**
+ * detail : 桑拿天突然“驾到”,小心“情绪中暑”~
+ * info : 易发
+ * name : 中暑
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class MakeupBean {
+ /**
+ * detail : 天气较热,易出汗,建议使用防脱水化妆品,少用粉底和胭脂,经常补粉。
+ * info : 防脱水
+ * name : 化妆
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class MoodBean {
+ /**
+ * detail : 有降水,雨水不仅给大地带来了一丝清凉,也可让较高气温带来的烦躁心绪降降温。
+ * info : 较差
+ * name : 心情
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class MorningBean {
+ /**
+ * detail : 有降水,且风力稍大,请尽量避免户外晨练,若坚持晨练请带上雨具。
+ * info : 不宜
+ * name : 晨练
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class SportsBean {
+ /**
+ * detail : 有降水,推荐您在室内进行低强度运动;若坚持户外运动,请选择合适的运动,并携带雨具。
+ * info : 较不宜
+ * name : 运动
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class SunglassesBean {
+ /**
+ * detail : 白天有降水天气,视线较差,不需要佩戴太阳镜
+ * info : 不需要
+ * name : 太阳镜
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class SunscreenBean {
+ /**
+ * detail : 属弱紫外辐射天气,长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。
+ * info : 弱
+ * name : 防晒
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class TourismBean {
+ /**
+ * detail : 较热,微风,有降水,请尽量不要外出,若外出,请注意防雷并携带雨具,注意防暑降温。
+ * info : 一般
+ * name : 旅游
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class TrafficBean {
+ /**
+ * detail : 有降水,路面湿滑,刹车距离延长,事故易发期,注意车距,务必小心驾驶。
+ * info : 一般
+ * name : 交通
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class UltravioletBean {
+ /**
+ * detail : 属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。
+ * info : 最弱
+ * name : 紫外线强度
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+
+ public static class UmbrellaBean {
+ /**
+ * detail : 有降水,如果您要短时间外出的话可不必带雨伞。
+ * info : 带伞
+ * name : 雨伞
+ */
+
+ private String detail;
+ private String info;
+ private String name;
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+ public void setInfo(String info) {
+ this.info = info;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+ }
+ }
+
+ public static class ObserveBean {
+ /**
+ * degree : 28
+ * humidity : 87
+ * precipitation : 0.0
+ * pressure : 1006
+ * update_time : 202009230045
+ * weather : 晴
+ * weather_code : 00
+ * weather_short : 晴
+ * wind_direction : 5
+ * wind_power : 1
+ */
+
+ private String degree;
+ private String humidity;
+ private String precipitation;
+ private String pressure;
+ private String update_time;
+ private String weather;
+ private String weather_code;
+ private String weather_short;
+ private String wind_direction;
+ private String wind_power;
+
+ public String getDegree() {
+ return degree;
+ }
+
+ public void setDegree(String degree) {
+ this.degree = degree;
+ }
+
+ public String getHumidity() {
+ return humidity;
+ }
+
+ public void setHumidity(String humidity) {
+ this.humidity = humidity;
+ }
+
+ public String getPrecipitation() {
+ return precipitation;
+ }
+
+ public void setPrecipitation(String precipitation) {
+ this.precipitation = precipitation;
+ }
+
+ public String getPressure() {
+ return pressure;
+ }
+
+ public void setPressure(String pressure) {
+ this.pressure = pressure;
+ }
+
+ public String getUpdate_time() {
+ return update_time;
+ }
+
+ public void setUpdate_time(String update_time) {
+ this.update_time = update_time;
+ }
+
+ public String getWeather() {
+ return weather;
+ }
+
+ public void setWeather(String weather) {
+ this.weather = weather;
+ }
+
+ public String getWeather_code() {
+ return weather_code;
+ }
+
+ public void setWeather_code(String weather_code) {
+ this.weather_code = weather_code;
+ }
+
+ public String getWeather_short() {
+ return weather_short;
+ }
+
+ public void setWeather_short(String weather_short) {
+ this.weather_short = weather_short;
+ }
+
+ public String getWind_direction() {
+ return wind_direction;
+ }
+
+ public void setWind_direction(String wind_direction) {
+ this.wind_direction = wind_direction;
+ }
+
+ public String getWind_power() {
+ return wind_power;
+ }
+
+ public void setWind_power(String wind_power) {
+ this.wind_power = wind_power;
+ }
+ }
+
+ public static class RiseBean {
+ /**
+ * 0 : {"sunrise":"06:16","sunset":"18:22","time":"20200923"}
+ * 1 : {"sunrise":"06:16","sunset":"18:21","time":"20200924"}
+ * 10 : {"sunrise":"06:19","sunset":"18:12","time":"20201003"}
+ * 11 : {"sunrise":"06:19","sunset":"18:11","time":"20201004"}
+ * 12 : {"sunrise":"06:20","sunset":"18:10","time":"20201005"}
+ * 13 : {"sunrise":"06:20","sunset":"18:09","time":"20201006"}
+ * 14 : {"sunrise":"06:20","sunset":"18:08","time":"20201007"}
+ * 15 : {"sunrise":"","sunset":"","time":"20200922"}
+ * 2 : {"sunrise":"06:16","sunset":"18:20","time":"20200925"}
+ * 3 : {"sunrise":"06:16","sunset":"18:19","time":"20200926"}
+ * 4 : {"sunrise":"06:17","sunset":"18:18","time":"20200927"}
+ * 5 : {"sunrise":"06:17","sunset":"18:17","time":"20200928"}
+ * 6 : {"sunrise":"06:17","sunset":"18:16","time":"20200929"}
+ * 7 : {"sunrise":"06:18","sunset":"18:15","time":"20200930"}
+ * 8 : {"sunrise":"06:18","sunset":"18:14","time":"20201001"}
+ * 9 : {"sunrise":"06:18","sunset":"18:13","time":"20201002"}
+ */
+
+ @SerializedName("0")
+ private _$0BeanX _$0;
+ @SerializedName("1")
+ private _$1BeanX _$1;
+ @SerializedName("10")
+ private _$10Bean _$10;
+ @SerializedName("11")
+ private _$11Bean _$11;
+ @SerializedName("12")
+ private _$12Bean _$12;
+ @SerializedName("13")
+ private _$13Bean _$13;
+ @SerializedName("14")
+ private _$14Bean _$14;
+ @SerializedName("15")
+ private _$15Bean _$15;
+ @SerializedName("2")
+ private _$2BeanX _$2;
+ @SerializedName("3")
+ private _$3BeanX _$3;
+ @SerializedName("4")
+ private _$4BeanX _$4;
+ @SerializedName("5")
+ private _$5BeanX _$5;
+ @SerializedName("6")
+ private _$6BeanX _$6;
+ @SerializedName("7")
+ private _$7BeanX _$7;
+ @SerializedName("8")
+ private _$8Bean _$8;
+ @SerializedName("9")
+ private _$9Bean _$9;
+
+ public _$0BeanX get_$0() {
+ return _$0;
+ }
+
+ public void set_$0(_$0BeanX _$0) {
+ this._$0 = _$0;
+ }
+
+ public _$1BeanX get_$1() {
+ return _$1;
+ }
+
+ public void set_$1(_$1BeanX _$1) {
+ this._$1 = _$1;
+ }
+
+ public _$10Bean get_$10() {
+ return _$10;
+ }
+
+ public void set_$10(_$10Bean _$10) {
+ this._$10 = _$10;
+ }
+
+ public _$11Bean get_$11() {
+ return _$11;
+ }
+
+ public void set_$11(_$11Bean _$11) {
+ this._$11 = _$11;
+ }
+
+ public _$12Bean get_$12() {
+ return _$12;
+ }
+
+ public void set_$12(_$12Bean _$12) {
+ this._$12 = _$12;
+ }
+
+ public _$13Bean get_$13() {
+ return _$13;
+ }
+
+ public void set_$13(_$13Bean _$13) {
+ this._$13 = _$13;
+ }
+
+ public _$14Bean get_$14() {
+ return _$14;
+ }
+
+ public void set_$14(_$14Bean _$14) {
+ this._$14 = _$14;
+ }
+
+ public _$15Bean get_$15() {
+ return _$15;
+ }
+
+ public void set_$15(_$15Bean _$15) {
+ this._$15 = _$15;
+ }
+
+ public _$2BeanX get_$2() {
+ return _$2;
+ }
+
+ public void set_$2(_$2BeanX _$2) {
+ this._$2 = _$2;
+ }
+
+ public _$3BeanX get_$3() {
+ return _$3;
+ }
+
+ public void set_$3(_$3BeanX _$3) {
+ this._$3 = _$3;
+ }
+
+ public _$4BeanX get_$4() {
+ return _$4;
+ }
+
+ public void set_$4(_$4BeanX _$4) {
+ this._$4 = _$4;
+ }
+
+ public _$5BeanX get_$5() {
+ return _$5;
+ }
+
+ public void set_$5(_$5BeanX _$5) {
+ this._$5 = _$5;
+ }
+
+ public _$6BeanX get_$6() {
+ return _$6;
+ }
+
+ public void set_$6(_$6BeanX _$6) {
+ this._$6 = _$6;
+ }
+
+ public _$7BeanX get_$7() {
+ return _$7;
+ }
+
+ public void set_$7(_$7BeanX _$7) {
+ this._$7 = _$7;
+ }
+
+ public _$8Bean get_$8() {
+ return _$8;
+ }
+
+ public void set_$8(_$8Bean _$8) {
+ this._$8 = _$8;
+ }
+
+ public _$9Bean get_$9() {
+ return _$9;
+ }
+
+ public void set_$9(_$9Bean _$9) {
+ this._$9 = _$9;
+ }
+
+ public static class _$0BeanX {
+ /**
+ * sunrise : 06:16
+ * sunset : 18:22
+ * time : 20200923
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$1BeanX {
+ /**
+ * sunrise : 06:16
+ * sunset : 18:21
+ * time : 20200924
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$10Bean {
+ /**
+ * sunrise : 06:19
+ * sunset : 18:12
+ * time : 20201003
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$11Bean {
+ /**
+ * sunrise : 06:19
+ * sunset : 18:11
+ * time : 20201004
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$12Bean {
+ /**
+ * sunrise : 06:20
+ * sunset : 18:10
+ * time : 20201005
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$13Bean {
+ /**
+ * sunrise : 06:20
+ * sunset : 18:09
+ * time : 20201006
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$14Bean {
+ /**
+ * sunrise : 06:20
+ * sunset : 18:08
+ * time : 20201007
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$15Bean {
+ /**
+ * sunrise :
+ * sunset :
+ * time : 20200922
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$2BeanX {
+ /**
+ * sunrise : 06:16
+ * sunset : 18:20
+ * time : 20200925
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$3BeanX {
+ /**
+ * sunrise : 06:16
+ * sunset : 18:19
+ * time : 20200926
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$4BeanX {
+ /**
+ * sunrise : 06:17
+ * sunset : 18:18
+ * time : 20200927
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$5BeanX {
+ /**
+ * sunrise : 06:17
+ * sunset : 18:17
+ * time : 20200928
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$6BeanX {
+ /**
+ * sunrise : 06:17
+ * sunset : 18:16
+ * time : 20200929
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$7BeanX {
+ /**
+ * sunrise : 06:18
+ * sunset : 18:15
+ * time : 20200930
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$8Bean {
+ /**
+ * sunrise : 06:18
+ * sunset : 18:14
+ * time : 20201001
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+
+ public static class _$9Bean {
+ /**
+ * sunrise : 06:18
+ * sunset : 18:13
+ * time : 20201002
+ */
+
+ private String sunrise;
+ private String sunset;
+ private String time;
+
+ public String getSunrise() {
+ return sunrise;
+ }
+
+ public void setSunrise(String sunrise) {
+ this.sunrise = sunrise;
+ }
+
+ public String getSunset() {
+ return sunset;
+ }
+
+ public void setSunset(String sunset) {
+ this.sunset = sunset;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+ }
+ }
+
+ public static class TipsBean {
+ /**
+ * observe : {"0":"你若安好,便是晴天~","1":"现在的温度比较舒适~"}
+ */
+
+ private ObserveBeanX observe;
+
+ public ObserveBeanX getObserve() {
+ return observe;
+ }
+
+ public void setObserve(ObserveBeanX observe) {
+ this.observe = observe;
+ }
+
+ public static class ObserveBeanX {
+ /**
+ * 0 : 你若安好,便是晴天~
+ * 1 : 现在的温度比较舒适~
+ */
+
+ @SerializedName("0")
+ private String _$0;
+ @SerializedName("1")
+ private String _$1;
+
+ public String get_$0() {
+ return _$0;
+ }
+
+ public void set_$0(String _$0) {
+ this._$0 = _$0;
+ }
+
+ public String get_$1() {
+ return _$1;
+ }
+
+ public void set_$1(String _$1) {
+ this._$1 = _$1;
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/myapplication/city_manager/CityManagerActivity.java b/app/src/main/java/com/example/myapplication/city_manager/CityManagerActivity.java
new file mode 100644
index 0000000..79cdae4
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/city_manager/CityManagerActivity.java
@@ -0,0 +1,69 @@
+package com.example.myapplication.city_manager;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.ListView;
+import android.widget.Toast;
+import com.example.myapplication.R;
+import com.example.myapplication.db.DBManager;
+import com.example.myapplication.db.DatabaseBean;
+import java.util.ArrayList;
+import java.util.List;
+import androidx.appcompat.app.AppCompatActivity;
+
+public class CityManagerActivity extends AppCompatActivity implements View.OnClickListener{
+ ImageView addIv,backIv,deleteIv;
+ ListView cityLv;
+ List mDatas; //显示列表数据源
+ private CityManagerAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_city_manager);
+ addIv = findViewById(R.id.city_iv_add);
+ backIv = findViewById(R.id.city_iv_back);
+ deleteIv = findViewById(R.id.city_iv_delete);
+ cityLv = findViewById(R.id.city_lv);
+ mDatas = new ArrayList<>();
+// 添加点击监听事件
+ addIv.setOnClickListener(this);
+ deleteIv.setOnClickListener(this);
+ backIv.setOnClickListener(this);
+// 设置适配器
+ adapter = new CityManagerAdapter(this, mDatas);
+ cityLv.setAdapter(adapter);
+ }
+/* 获取数据库当中真实数据源,添加到原有数据源当中,提示适配器更新*/
+ @Override
+ protected void onResume() {
+ super.onResume();
+ List list = DBManager.queryAllInfo();
+ mDatas.clear();
+ mDatas.addAll(list);
+ adapter.notifyDataSetChanged();
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.city_iv_add:
+ int cityCount = DBManager.getCityCount();
+ if (cityCount<5) {
+ Intent intent = new Intent(this, SearchCityActivity.class);
+ startActivity(intent);
+ }else {
+ Toast.makeText(this,"存储城市数量已达上限,请删除后再增加",Toast.LENGTH_SHORT).show();
+ }
+ break;
+ case R.id.city_iv_back:
+ finish();
+ break;
+ case R.id.city_iv_delete:
+ Intent intent1 = new Intent(this, DeleteCityActivity.class);
+ startActivity(intent1);
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/city_manager/CityManagerAdapter.java b/app/src/main/java/com/example/myapplication/city_manager/CityManagerAdapter.java
new file mode 100644
index 0000000..eedf492
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/city_manager/CityManagerAdapter.java
@@ -0,0 +1,89 @@
+package com.example.myapplication.city_manager;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+import com.example.myapplication.R;
+import com.example.myapplication.bean.WeatherBean;
+import com.example.myapplication.db.DatabaseBean;
+import com.google.gson.Gson;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+public class CityManagerAdapter extends BaseAdapter{
+ Context context;
+ ListmDatas;
+
+ public CityManagerAdapter(Context context, List mDatas) {
+ this.context = context;
+ this.mDatas = mDatas;
+ }
+
+ @Override
+ public int getCount() {
+ return mDatas.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mDatas.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder = null;
+ if (convertView == null) {
+ convertView = LayoutInflater.from(context).inflate(R.layout.item_city_manager,null);
+ holder = new ViewHolder(convertView);
+ convertView.setTag(holder);
+ }else{
+ holder = (ViewHolder) convertView.getTag();
+ }
+ DatabaseBean bean = mDatas.get(position);
+ holder.cityTv.setText(bean.getCity());
+ WeatherBean weatherBean = new Gson().fromJson(bean.getContent(), WeatherBean.class);
+// 获取今日天气情况
+ WeatherBean.DataBean.ObserveBean dataBean = weatherBean.getData().getObserve();
+ holder.conTv.setText("天气 : "+dataBean.getWeather_short());
+ holder.currentTempTv.setText(dataBean.getDegree()+"°C");
+ holder.windTv.setText("湿度 :"+dataBean.getHumidity()+"% ");
+ try {
+ holder.tempRangeTv.setText(changeTime(dataBean.getUpdate_time()));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return convertView;
+ }
+
+ // 时间格式化
+ private String changeTime(String update_time) throws ParseException {
+ SimpleDateFormat sf1 = new SimpleDateFormat("yyyyMMddHHmm");
+ SimpleDateFormat sf2 =new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ String sfstr = "";
+ sfstr = sf2.format(sf1.parse(update_time));
+ return sfstr;
+ }
+
+ class ViewHolder{
+ TextView cityTv,conTv,currentTempTv,windTv,tempRangeTv;
+ public ViewHolder(View itemView){
+ cityTv = itemView.findViewById(R.id.item_city_tv_city);
+ conTv = itemView.findViewById(R.id.item_city_tv_condition);
+ currentTempTv = itemView.findViewById(R.id.item_city_tv_temp);
+ windTv = itemView.findViewById(R.id.item_city_wind);
+ tempRangeTv = itemView.findViewById(R.id.item_city_temprange);
+
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/city_manager/DeleteCityActivity.java b/app/src/main/java/com/example/myapplication/city_manager/DeleteCityActivity.java
new file mode 100644
index 0000000..8ecd1d7
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/city_manager/DeleteCityActivity.java
@@ -0,0 +1,67 @@
+package com.example.myapplication.city_manager;
+
+import android.app.AlertDialog;
+import android.content.DialogInterface;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.ListView;
+
+import com.example.myapplication.R;
+import com.example.myapplication.db.DBManager;
+
+import java.util.ArrayList;
+import java.util.List;
+import androidx.appcompat.app.AppCompatActivity;
+
+public class DeleteCityActivity extends AppCompatActivity implements View.OnClickListener{
+ ImageView errorIv,rightIv;
+ ListView deleteLv;
+ ListmDatas; //listview的数据源
+ ListdeleteCitys; //表示存储了删除的城市信息
+ private DeleteCityAdapter adapter;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_delete_city);
+ errorIv = findViewById(R.id.delete_iv_error);
+ rightIv = findViewById(R.id.delete_iv_right);
+ deleteLv = findViewById(R.id.delete_lv);
+ mDatas = DBManager.queryAllCityName();
+ deleteCitys = new ArrayList<>();
+// 设置点击监听事件
+ errorIv.setOnClickListener(this);
+ rightIv.setOnClickListener(this);
+// 适配器的设置
+ adapter = new DeleteCityAdapter(this, mDatas, deleteCitys);
+ deleteLv.setAdapter(adapter);
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.delete_iv_error:
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("提示信息").setMessage("您确定要舍弃更改么?")
+ .setPositiveButton("舍弃更改", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ finish(); //关闭当前的activity
+ }
+ });
+ builder.setNegativeButton("取消",null);
+ builder.create().show();
+ break;
+ case R.id.delete_iv_right:
+ for (int i = 0; i < deleteCitys.size(); i++) {
+ String city = deleteCitys.get(i);
+// 调用删除城市的函数
+ int i1 = DBManager.deleteInfoByCity(city);
+ }
+// 删除成功返回上一级页面
+ finish();
+ break;
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/city_manager/DeleteCityAdapter.java b/app/src/main/java/com/example/myapplication/city_manager/DeleteCityAdapter.java
new file mode 100644
index 0000000..7179ebd
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/city_manager/DeleteCityAdapter.java
@@ -0,0 +1,70 @@
+package com.example.myapplication.city_manager;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.TextView;
+import com.example.myapplication.R;
+import java.util.List;
+
+public class DeleteCityAdapter extends BaseAdapter{
+ Context context;
+ ListmDatas;
+ ListdeleteCitys;
+
+ public DeleteCityAdapter(Context context, List mDatas,ListdeleteCitys) {
+ this.context = context;
+ this.mDatas = mDatas;
+ this.deleteCitys = deleteCitys;
+ }
+
+ @Override
+ public int getCount() {
+ return mDatas.size();
+ }
+
+ @Override
+ public Object getItem(int position) {
+ return mDatas.get(position);
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return position;
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder = null;
+ if (convertView == null) {
+ convertView = LayoutInflater.from(context).inflate(R.layout.item_deletecity,null);
+ holder = new ViewHolder(convertView);
+ convertView.setTag(holder);
+ }else{
+ holder = (ViewHolder) convertView.getTag();
+ }
+ final String city = mDatas.get(position);
+ holder.tv.setText(city);
+ holder.iv.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ mDatas.remove(city);
+ deleteCitys.add(city);
+ notifyDataSetChanged(); //删除了提示适配器更新
+ }
+ });
+ return convertView;
+ }
+
+ class ViewHolder{
+ TextView tv;
+ ImageView iv;
+ public ViewHolder(View itemView){
+ tv = itemView.findViewById(R.id.item_delete_tv);
+ iv = itemView.findViewById(R.id.item_delete_iv);
+ }
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/city_manager/SearchCityActivity.java b/app/src/main/java/com/example/myapplication/city_manager/SearchCityActivity.java
new file mode 100644
index 0000000..d21fc37
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/city_manager/SearchCityActivity.java
@@ -0,0 +1,109 @@
+package com.example.myapplication.city_manager;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.EditText;
+import android.widget.GridView;
+import android.widget.ImageView;
+import android.widget.Toast;
+
+import com.example.myapplication.MainActivity;
+import com.example.myapplication.R;
+import com.example.myapplication.base.BaseActivity;
+import com.example.myapplication.bean.WeatherBean;
+import com.google.gson.Gson;
+
+public class SearchCityActivity extends BaseActivity implements View.OnClickListener{
+ EditText searchEt;
+ ImageView submitIv;
+ GridView searchGv;
+ String[]hotCitys = {"北京","上海","广州","深圳","珠海","佛山","南京","苏州","厦门",
+ "长沙","成都","福州","杭州","武汉","青岛","西安","太原","沈阳","重庆","天津","南宁","运城","郑州","北海"};
+ private ArrayAdapter adapter;
+ //腾讯api
+ String url1 = "https://wis.qq.com/weather/common?source=pc&weather_type=observe|index|rise|alarm|air|tips|forecast_24h&province=";
+ String url2 = "&city=";
+ String city;
+ String provice;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_search_city);
+ searchEt = findViewById(R.id.search_et);
+ submitIv = findViewById(R.id.search_iv_submit);
+ searchGv = findViewById(R.id.search_gv);
+ submitIv.setOnClickListener(this);
+// 设置适配器
+ adapter = new ArrayAdapter<>(this, R.layout.item_hotcity, hotCitys);
+ searchGv.setAdapter(adapter);
+ setListener();
+ }
+ /* 设置监听事件*/
+ private void setListener() {
+ searchGv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView> parent, View view, int position, long id) {
+ city = hotCitys[position];
+// 获取省份
+ provice=GetProvice(city);
+ String url = url1+provice+url2+city;
+ loadData(url);
+ }
+ });
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.search_iv_submit:
+ city = searchEt.getText().toString();
+ if (!TextUtils.isEmpty(city)) {
+// 判断是否能够找到这个城市
+ provice=GetProvice(city);
+ String url = url1+provice+url2+city;
+ loadData(url);
+ }else {
+ Toast.makeText(this,"输入内容不能为空!",Toast.LENGTH_SHORT).show();
+ }
+ break;
+ }
+ }
+
+ @Override
+ public void onSuccess(String result) {
+ WeatherBean weatherBean = new Gson().fromJson(result, WeatherBean.class);
+ if (weatherBean.getData().getIndex().getClothes()!=null) {
+ Intent intent = new Intent(this, MainActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
+ city=provice+" "+city;
+ intent.putExtra("city",city);
+ startActivity(intent);
+ }else{
+ Toast.makeText(this,"暂时未收入此城市天气信息...",Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private String GetProvice(String city) {
+ String[]Citys = {"北京","上海","广东省 广州","广东省 深圳","广东省 珠海","广东省 佛山",
+ "江苏省 南京","江苏省 苏州","福建省 厦门","湖南省 长沙","四川省 成都","福建省 福州","浙江省 杭州",
+ "湖北省 武汉","山东省 青岛","陕西省 西安","山西省 太原","辽宁省 沈阳","重庆","天津","广西省 南宁","广西省 北海"};
+ for(int i=0;i1)
+ { provice =Citys[i].split(" ")[0];
+ }
+ else
+ {
+ provice = Citys[i].split(" ")[0];
+ }
+ break;
+ }
+ }
+ return provice;
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/db/DBHelper.java b/app/src/main/java/com/example/myapplication/db/DBHelper.java
new file mode 100644
index 0000000..63b29d7
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/db/DBHelper.java
@@ -0,0 +1,23 @@
+package com.example.myapplication.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+
+public class DBHelper extends SQLiteOpenHelper{
+
+ public DBHelper(Context context){
+ super(context,"forecast.db",null,1);
+ }
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+// 创建表的操作
+ String sql = "create table info(_id integer primary key autoincrement,city varchar(20) unique not null,content text not null)";
+ db.execSQL(sql);
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/db/DBManager.java b/app/src/main/java/com/example/myapplication/db/DBManager.java
new file mode 100644
index 0000000..4107db1
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/db/DBManager.java
@@ -0,0 +1,83 @@
+package com.example.myapplication.db;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DBManager {
+ public static SQLiteDatabase database;
+ /* 初始化数据库信息*/
+ public static void initDB(Context context){
+ DBHelper dbHelper = new DBHelper(context);
+ database = dbHelper.getWritableDatabase();
+ }
+ /* 查找数据库当中城市列表*/
+ public static ListqueryAllCityName(){
+ Cursor cursor = database.query("info", null, null, null, null, null,null);
+ ListcityList = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ String city = cursor.getString(cursor.getColumnIndex("city"));
+ cityList.add(city);
+ }
+ return cityList;
+ }
+ /* 根据城市名称,替换信息内容*/
+ public static int updateInfoByCity(String city,String content){
+ ContentValues values = new ContentValues();
+ values.put("content",content);
+ return database.update("info",values,"city=?",new String[]{city});
+ }
+ /* 新增一条城市记录*/
+ public static long addCityInfo(String city,String content){
+ ContentValues values = new ContentValues();
+ values.put("city",city);
+ values.put("content",content);
+ return database.insert("info",null,values);
+ }
+ /* 根据城市名,查询数据库当中的内容*/
+ public static String queryInfoByCity(String city){
+ Cursor cursor = database.query("info", null, "city=?", new String[]{city}, null, null, null);
+ if (cursor.getCount()>0) {
+ cursor.moveToFirst();
+ String content = cursor.getString(cursor.getColumnIndex("content"));
+ return content;
+ }
+ return null;
+ }
+
+ /* 存储城市天气要求最多存储5个城市的信息,一旦超过5个城市就不能存储了,获取目前已经存储的数量*/
+ public static int getCityCount(){
+ Cursor cursor = database.query("info", null, null, null, null, null, null);
+ int count = cursor.getCount();
+ return count;
+ }
+
+ /* 查询数据库当中的全部信息*/
+ public static ListqueryAllInfo(){
+ Cursor cursor = database.query("info", null, null, null, null, null, null);
+ Listlist = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ int id = cursor.getInt(cursor.getColumnIndex("_id"));
+ String city = cursor.getString(cursor.getColumnIndex("city"));
+ String content = cursor.getString(cursor.getColumnIndex("content"));
+ DatabaseBean bean = new DatabaseBean(id, city, content);
+ list.add(bean);
+ }
+ return list;
+ }
+
+ /* 根据城市名称,删除这个城市在数据库当中的数据*/
+ public static int deleteInfoByCity(String city){
+ return database.delete("info","city=?",new String[]{city});
+ }
+
+ /* 删除表当中所有的数据信息*/
+ public static void deleteAllInfo(){
+ String sql = "delete from info";
+ database.execSQL(sql);
+ }
+}
diff --git a/app/src/main/java/com/example/myapplication/db/DatabaseBean.java b/app/src/main/java/com/example/myapplication/db/DatabaseBean.java
new file mode 100644
index 0000000..712f521
--- /dev/null
+++ b/app/src/main/java/com/example/myapplication/db/DatabaseBean.java
@@ -0,0 +1,40 @@
+package com.example.myapplication.db;
+
+public class DatabaseBean {
+ private int _id;
+ private String city;
+ private String content;
+
+ public DatabaseBean() {
+ }
+
+ public DatabaseBean(int _id, String city, String content) {
+ this._id = _id;
+ this.city = city;
+ this.content = content;
+ }
+
+ public int get_id() {
+ return _id;
+ }
+
+ public void set_id(int _id) {
+ this._id = _id;
+ }
+
+ public String getCity() {
+ return city;
+ }
+
+ public void setCity(String city) {
+ this.city = city;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+}
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
new file mode 100644
index 0000000..1f6bb29
--- /dev/null
+++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/frag_bg.xml b/app/src/main/res/drawable/frag_bg.xml
new file mode 100644
index 0000000..acdf94e
--- /dev/null
+++ b/app/src/main/res/drawable/frag_bg.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/frag_bg1.xml b/app/src/main/res/drawable/frag_bg1.xml
new file mode 100644
index 0000000..b87619e
--- /dev/null
+++ b/app/src/main/res/drawable/frag_bg1.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/hotbg.xml b/app/src/main/res/drawable/hotbg.xml
new file mode 100644
index 0000000..eab59ce
--- /dev/null
+++ b/app/src/main/res/drawable/hotbg.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 0000000..0d025f9
--- /dev/null
+++ b/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/searchbg.xml b/app/src/main/res/drawable/searchbg.xml
new file mode 100644
index 0000000..5008cc3
--- /dev/null
+++ b/app/src/main/res/drawable/searchbg.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_city_manager.xml b/app/src/main/res/layout/activity_city_manager.xml
new file mode 100644
index 0000000..b657a5d
--- /dev/null
+++ b/app/src/main/res/layout/activity_city_manager.xml
@@ -0,0 +1,56 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_delete_city.xml b/app/src/main/res/layout/activity_delete_city.xml
new file mode 100644
index 0000000..0aa4039
--- /dev/null
+++ b/app/src/main/res/layout/activity_delete_city.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..7a486a3
--- /dev/null
+++ b/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_more.xml b/app/src/main/res/layout/activity_more.xml
new file mode 100644
index 0000000..f1e1d2f
--- /dev/null
+++ b/app/src/main/res/layout/activity_more.xml
@@ -0,0 +1,170 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_search_city.xml b/app/src/main/res/layout/activity_search_city.xml
new file mode 100644
index 0000000..14cdb9f
--- /dev/null
+++ b/app/src/main/res/layout/activity_search_city.xml
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_city_weather.xml b/app/src/main/res/layout/fragment_city_weather.xml
new file mode 100644
index 0000000..f2c558b
--- /dev/null
+++ b/app/src/main/res/layout/fragment_city_weather.xml
@@ -0,0 +1,217 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_city_manager.xml b/app/src/main/res/layout/item_city_manager.xml
new file mode 100644
index 0000000..4742354
--- /dev/null
+++ b/app/src/main/res/layout/item_city_manager.xml
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_deletecity.xml b/app/src/main/res/layout/item_deletecity.xml
new file mode 100644
index 0000000..3c7b4eb
--- /dev/null
+++ b/app/src/main/res/layout/item_deletecity.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_hotcity.xml b/app/src/main/res/layout/item_hotcity.xml
new file mode 100644
index 0000000..84f845d
--- /dev/null
+++ b/app/src/main/res/layout/item_hotcity.xml
@@ -0,0 +1,10 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_main_center.xml b/app/src/main/res/layout/item_main_center.xml
new file mode 100644
index 0000000..0bc5e1b
--- /dev/null
+++ b/app/src/main/res/layout/item_main_center.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..eca70cf
--- /dev/null
+++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/a1.png b/app/src/main/res/mipmap-hdpi/a1.png
new file mode 100644
index 0000000..e6485db
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/a1.png differ
diff --git a/app/src/main/res/mipmap-hdpi/a2.png b/app/src/main/res/mipmap-hdpi/a2.png
new file mode 100644
index 0000000..144f8c1
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/a2.png differ
diff --git a/app/src/main/res/mipmap-hdpi/a3.png b/app/src/main/res/mipmap-hdpi/a3.png
new file mode 100644
index 0000000..2aba12b
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/a3.png differ
diff --git a/app/src/main/res/mipmap-hdpi/bg.png b/app/src/main/res/mipmap-hdpi/bg.png
new file mode 100644
index 0000000..15d8d78
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bg.png differ
diff --git a/app/src/main/res/mipmap-hdpi/bg2.png b/app/src/main/res/mipmap-hdpi/bg2.png
new file mode 100644
index 0000000..9d88769
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bg2.png differ
diff --git a/app/src/main/res/mipmap-hdpi/bg3.jpg b/app/src/main/res/mipmap-hdpi/bg3.jpg
new file mode 100644
index 0000000..f011271
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bg3.jpg differ
diff --git a/app/src/main/res/mipmap-hdpi/bg4.png b/app/src/main/res/mipmap-hdpi/bg4.png
new file mode 100644
index 0000000..852d263
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bg4.png differ
diff --git a/app/src/main/res/mipmap-hdpi/bg5.jpg b/app/src/main/res/mipmap-hdpi/bg5.jpg
new file mode 100644
index 0000000..76e0c6c
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bg5.jpg differ
diff --git a/app/src/main/res/mipmap-hdpi/bigcitysky.png b/app/src/main/res/mipmap-hdpi/bigcitysky.png
new file mode 100644
index 0000000..b3b690b
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/bigcitysky.png differ
diff --git a/app/src/main/res/mipmap-hdpi/citygrilselect.png b/app/src/main/res/mipmap-hdpi/citygrilselect.png
new file mode 100644
index 0000000..8a17674
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/citygrilselect.png differ
diff --git a/app/src/main/res/mipmap-hdpi/gificon.gif b/app/src/main/res/mipmap-hdpi/gificon.gif
new file mode 100644
index 0000000..9c4b3ed
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/gificon.gif differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..a2f5908
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..1b52399
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon.png b/app/src/main/res/mipmap-hdpi/icon.png
new file mode 100644
index 0000000..5bc72e6
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon1.png b/app/src/main/res/mipmap-hdpi/icon1.png
new file mode 100644
index 0000000..5478de7
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon1.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_add.png b/app/src/main/res/mipmap-hdpi/icon_add.png
new file mode 100644
index 0000000..bc82bbb
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_add.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_back.png b/app/src/main/res/mipmap-hdpi/icon_back.png
new file mode 100644
index 0000000..2bd9d9e
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_back.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_car.png b/app/src/main/res/mipmap-hdpi/icon_car.png
new file mode 100644
index 0000000..8e4d3a9
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_car.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_cloth.png b/app/src/main/res/mipmap-hdpi/icon_cloth.png
new file mode 100644
index 0000000..281443d
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_cloth.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_error.png b/app/src/main/res/mipmap-hdpi/icon_error.png
new file mode 100644
index 0000000..b89c41c
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_error.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_ganmao.png b/app/src/main/res/mipmap-hdpi/icon_ganmao.png
new file mode 100644
index 0000000..c9bc6ad
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_ganmao.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_laji.png b/app/src/main/res/mipmap-hdpi/icon_laji.png
new file mode 100644
index 0000000..5ab6199
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_laji.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_light.png b/app/src/main/res/mipmap-hdpi/icon_light.png
new file mode 100644
index 0000000..b9c64c6
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_light.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_more.png b/app/src/main/res/mipmap-hdpi/icon_more.png
new file mode 100644
index 0000000..7d0848f
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_more.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_right.png b/app/src/main/res/mipmap-hdpi/icon_right.png
new file mode 100644
index 0000000..e57054b
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_right.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_search.png b/app/src/main/res/mipmap-hdpi/icon_search.png
new file mode 100644
index 0000000..5eeebe2
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_search.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_sport.png b/app/src/main/res/mipmap-hdpi/icon_sport.png
new file mode 100644
index 0000000..509e969
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_sport.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_umbrella.png b/app/src/main/res/mipmap-hdpi/icon_umbrella.png
new file mode 100644
index 0000000..9ff6e4f
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_umbrella.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_upload.png b/app/src/main/res/mipmap-hdpi/icon_upload.png
new file mode 100644
index 0000000..c6636d0
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_upload.png differ
diff --git a/app/src/main/res/mipmap-hdpi/icon_write.png b/app/src/main/res/mipmap-hdpi/icon_write.png
new file mode 100644
index 0000000..debe987
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/icon_write.png differ
diff --git a/app/src/main/res/mipmap-hdpi/more_bg.png b/app/src/main/res/mipmap-hdpi/more_bg.png
new file mode 100644
index 0000000..7b73671
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/more_bg.png differ
diff --git a/app/src/main/res/mipmap-hdpi/more_cache.png b/app/src/main/res/mipmap-hdpi/more_cache.png
new file mode 100644
index 0000000..82e19db
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/more_cache.png differ
diff --git a/app/src/main/res/mipmap-hdpi/more_share.png b/app/src/main/res/mipmap-hdpi/more_share.png
new file mode 100644
index 0000000..96416e5
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/more_share.png differ
diff --git a/app/src/main/res/mipmap-hdpi/more_version.png b/app/src/main/res/mipmap-hdpi/more_version.png
new file mode 100644
index 0000000..e3adbc9
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/more_version.png differ
diff --git a/app/src/main/res/mipmap-hdpi/snow.jpg b/app/src/main/res/mipmap-hdpi/snow.jpg
new file mode 100644
index 0000000..124459c
Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/snow.jpg differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..64ba76f
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..dae5e08
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..e5ed465
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..14ed0af
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/a1.png b/app/src/main/res/mipmap-xxhdpi/a1.png
new file mode 100644
index 0000000..e6485db
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/a1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/a2.png b/app/src/main/res/mipmap-xxhdpi/a2.png
new file mode 100644
index 0000000..144f8c1
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/a2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/a3.png b/app/src/main/res/mipmap-xxhdpi/a3.png
new file mode 100644
index 0000000..2aba12b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/a3.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg.png b/app/src/main/res/mipmap-xxhdpi/bg.png
new file mode 100644
index 0000000..15d8d78
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg2.png b/app/src/main/res/mipmap-xxhdpi/bg2.png
new file mode 100644
index 0000000..9d88769
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg2.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg3.jpg b/app/src/main/res/mipmap-xxhdpi/bg3.jpg
new file mode 100644
index 0000000..f011271
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg3.jpg differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg4.png b/app/src/main/res/mipmap-xxhdpi/bg4.png
new file mode 100644
index 0000000..852d263
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg4.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg5.jpg b/app/src/main/res/mipmap-xxhdpi/bg5.jpg
new file mode 100644
index 0000000..76e0c6c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg5.jpg differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bg6.jpg b/app/src/main/res/mipmap-xxhdpi/bg6.jpg
new file mode 100644
index 0000000..f22060c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bg6.jpg differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bgcity.png b/app/src/main/res/mipmap-xxhdpi/bgcity.png
new file mode 100644
index 0000000..15d8d78
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bgcity.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bigcitysky.png b/app/src/main/res/mipmap-xxhdpi/bigcitysky.png
new file mode 100644
index 0000000..b3b690b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bigcitysky.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/bj.png b/app/src/main/res/mipmap-xxhdpi/bj.png
new file mode 100644
index 0000000..e5f047d
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/bj.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/citygrilselect.png b/app/src/main/res/mipmap-xxhdpi/citygrilselect.png
new file mode 100644
index 0000000..8a17674
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/citygrilselect.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/gificon.gif b/app/src/main/res/mipmap-xxhdpi/gificon.gif
new file mode 100644
index 0000000..9c4b3ed
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/gificon.gif differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..b0907ca
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..d8ae031
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon.png b/app/src/main/res/mipmap-xxhdpi/icon.png
new file mode 100644
index 0000000..e69de29
diff --git a/app/src/main/res/mipmap-xxhdpi/icon1.png b/app/src/main/res/mipmap-xxhdpi/icon1.png
new file mode 100644
index 0000000..5478de7
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_add.png b/app/src/main/res/mipmap-xxhdpi/icon_add.png
new file mode 100644
index 0000000..bc82bbb
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_add.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_back.png b/app/src/main/res/mipmap-xxhdpi/icon_back.png
new file mode 100644
index 0000000..2bd9d9e
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_back.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_car.png b/app/src/main/res/mipmap-xxhdpi/icon_car.png
new file mode 100644
index 0000000..8e4d3a9
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_car.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_cloth.png b/app/src/main/res/mipmap-xxhdpi/icon_cloth.png
new file mode 100644
index 0000000..281443d
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_cloth.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_error.png b/app/src/main/res/mipmap-xxhdpi/icon_error.png
new file mode 100644
index 0000000..b89c41c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_error.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_ganmao.png b/app/src/main/res/mipmap-xxhdpi/icon_ganmao.png
new file mode 100644
index 0000000..c9bc6ad
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_ganmao.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_laji.png b/app/src/main/res/mipmap-xxhdpi/icon_laji.png
new file mode 100644
index 0000000..5ab6199
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_laji.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_light.png b/app/src/main/res/mipmap-xxhdpi/icon_light.png
new file mode 100644
index 0000000..b9c64c6
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_light.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_more.png b/app/src/main/res/mipmap-xxhdpi/icon_more.png
new file mode 100644
index 0000000..7d0848f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_more.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_right.png b/app/src/main/res/mipmap-xxhdpi/icon_right.png
new file mode 100644
index 0000000..e57054b
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_right.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_search.png b/app/src/main/res/mipmap-xxhdpi/icon_search.png
new file mode 100644
index 0000000..5eeebe2
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_search.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_sport.png b/app/src/main/res/mipmap-xxhdpi/icon_sport.png
new file mode 100644
index 0000000..509e969
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_sport.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_umbrella.png b/app/src/main/res/mipmap-xxhdpi/icon_umbrella.png
new file mode 100644
index 0000000..9ff6e4f
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_umbrella.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_upload.png b/app/src/main/res/mipmap-xxhdpi/icon_upload.png
new file mode 100644
index 0000000..c6636d0
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_upload.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/icon_write.png b/app/src/main/res/mipmap-xxhdpi/icon_write.png
new file mode 100644
index 0000000..debe987
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/icon_write.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_ai.png b/app/src/main/res/mipmap-xxhdpi/more_ai.png
new file mode 100644
index 0000000..0208f6c
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_ai.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_ai1.png b/app/src/main/res/mipmap-xxhdpi/more_ai1.png
new file mode 100644
index 0000000..a575afb
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_ai1.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_bg.png b/app/src/main/res/mipmap-xxhdpi/more_bg.png
new file mode 100644
index 0000000..7b73671
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_bg.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_cache.png b/app/src/main/res/mipmap-xxhdpi/more_cache.png
new file mode 100644
index 0000000..82e19db
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_cache.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_music.jpg b/app/src/main/res/mipmap-xxhdpi/more_music.jpg
new file mode 100644
index 0000000..7fff738
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_music.jpg differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_share.png b/app/src/main/res/mipmap-xxhdpi/more_share.png
new file mode 100644
index 0000000..96416e5
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_share.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/more_version.png b/app/src/main/res/mipmap-xxhdpi/more_version.png
new file mode 100644
index 0000000..e3adbc9
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/more_version.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/bgcity.png b/app/src/main/res/mipmap-xxxhdpi/bgcity.png
new file mode 100644
index 0000000..15d8d78
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/bgcity.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..2c18de9
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..beed3cd
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/snow.jpg b/app/src/main/res/mipmap-xxxhdpi/snow.jpg
new file mode 100644
index 0000000..124459c
Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/snow.jpg differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
new file mode 100644
index 0000000..f66886c
--- /dev/null
+++ b/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+
+
+ #008577
+ #03DAC5
+ #D81B60
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..d33ccdc
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ 天气预报
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..686a8e2
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/test/java/com/example/myapplication/ExampleUnitTest.java b/app/src/test/java/com/example/myapplication/ExampleUnitTest.java
new file mode 100644
index 0000000..bf43ee5
--- /dev/null
+++ b/app/src/test/java/com/example/myapplication/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.example.myapplication;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..2ab85cd
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,28 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.0.2'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
+
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..199d16e
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,20 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..f6b961f
Binary files /dev/null and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..aeb94bb
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Sep 21 15:31:16 GMT+08:00 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..cccdd3d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..f955316
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..e9b2b1e
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+include ':app'
+rootProject.name='My Application'