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'