From b5b359cc980b514610ca71a8c1b736f7308deed0 Mon Sep 17 00:00:00 2001 From: maning <154292322@qq.com> Date: Thu, 15 Oct 2020 09:28:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=A9=E6=B0=94=E8=AF=A6=E6=83=85=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E6=B7=BB=E5=8A=A0=E7=94=9F=E6=B4=BB=E6=8C=87=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../gankmm/bean/mob/WeatherBeseEntity.java | 2 +- ...{WeatherBean.java => WeatherInfoBean.java} | 6 +- .../{ => caiyun}/CaiyunWeatherBaseBean.java | 2 +- .../{ => caiyun}/CaiyunWeatherDailyBean.java | 2 +- .../CaiyunWeatherRealTimeBean.java | 63 +---- .../ZhixinBaseBean.java} | 4 +- .../ZhixinLifeSuggestionResultBean.java | 125 ++++++++++ .../zhixin/ZhixinSuggestionEntity.java | 228 ++++++++++++++++++ .../ZhixinWeatherRealtimeBean.java} | 4 +- .../http/callback/CommonHttpCallback.java | 12 +- .../http/weather/APIWeatherService.java | 17 +- .../gankmm/http/weather/WeatherApi.java | 93 ++++--- .../gankmm/ui/activity/MainActivity.java | 37 +-- .../gankmm/ui/activity/WeatherActivity.java | 47 ++-- .../gankmm/ui/adapter/WeatherAdapter.java | 78 ++++-- .../com/maning/gankmm/ui/iView/IMainView.java | 8 +- .../maning/gankmm/ui/iView/IWeatherView.java | 6 +- .../ui/presenter/IWeatherPresenter.java | 5 +- .../ui/presenter/impl/MainPresenterImpl.java | 15 +- .../presenter/impl/WeatherPresenterImpl.java | 62 +++-- .../icon_weather_suggestion_car_washing.png | Bin 0 -> 2844 bytes .../icon_weather_suggestion_dressing.png | Bin 0 -> 5766 bytes .../icon_weather_suggestion_flu.png | Bin 0 -> 3922 bytes .../icon_weather_suggestion_sport.png | Bin 0 -> 5054 bytes .../icon_weather_suggestion_travel.png | Bin 0 -> 5693 bytes .../icon_weather_suggestion_uv.png | Bin 0 -> 4039 bytes .../res/layout/item_weather_suggestion.xml | 202 ++++++++++++++++ 27 files changed, 815 insertions(+), 203 deletions(-) rename app/src/main/java/com/maning/gankmm/bean/weather/{WeatherBean.java => WeatherInfoBean.java} (94%) rename app/src/main/java/com/maning/gankmm/bean/weather/{ => caiyun}/CaiyunWeatherBaseBean.java (97%) rename app/src/main/java/com/maning/gankmm/bean/weather/{ => caiyun}/CaiyunWeatherDailyBean.java (99%) rename app/src/main/java/com/maning/gankmm/bean/weather/{ => caiyun}/CaiyunWeatherRealTimeBean.java (86%) rename app/src/main/java/com/maning/gankmm/bean/weather/{WeatherBaseBean.java => zhixin/ZhixinBaseBean.java} (85%) create mode 100644 app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinLifeSuggestionResultBean.java create mode 100644 app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinSuggestionEntity.java rename app/src/main/java/com/maning/gankmm/bean/weather/{WeatherNowBean.java => zhixin/ZhixinWeatherRealtimeBean.java} (98%) create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_car_washing.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_dressing.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_flu.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_sport.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_travel.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_uv.png create mode 100644 app/src/main/res/layout/item_weather_suggestion.xml diff --git a/app/src/main/java/com/maning/gankmm/bean/mob/WeatherBeseEntity.java b/app/src/main/java/com/maning/gankmm/bean/mob/WeatherBeseEntity.java index 6bb0d20..96548f2 100644 --- a/app/src/main/java/com/maning/gankmm/bean/mob/WeatherBeseEntity.java +++ b/app/src/main/java/com/maning/gankmm/bean/mob/WeatherBeseEntity.java @@ -6,7 +6,7 @@ /** * Created by maning on 2017/4/1. */ - +@Deprecated public class WeatherBeseEntity implements Serializable{ diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/WeatherInfoBean.java similarity index 94% rename from app/src/main/java/com/maning/gankmm/bean/weather/WeatherBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/WeatherInfoBean.java index 59f0161..6514188 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/WeatherInfoBean.java @@ -1,12 +1,16 @@ package com.maning.gankmm.bean.weather; +import java.io.Serializable; + /** * @author : maning * @date : 2020-10-14 * @desc : 自己组装使用的天气数据 */ -public class WeatherBean { +public class WeatherInfoBean implements Serializable { + + private static final long serialVersionUID = 8274082861209944804L; //天气 private String weather_desc; //温度 diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherBaseBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherBaseBean.java similarity index 97% rename from app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherBaseBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherBaseBean.java index b28e077..4c208e4 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherBaseBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherBaseBean.java @@ -1,4 +1,4 @@ -package com.maning.gankmm.bean.weather; +package com.maning.gankmm.bean.weather.caiyun; import java.util.List; diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherDailyBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherDailyBean.java similarity index 99% rename from app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherDailyBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherDailyBean.java index a74208e..aa9a5c7 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherDailyBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherDailyBean.java @@ -1,4 +1,4 @@ -package com.maning.gankmm.bean.weather; +package com.maning.gankmm.bean.weather.caiyun; import com.google.gson.annotations.SerializedName; diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherRealTimeBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherRealTimeBean.java similarity index 86% rename from app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherRealTimeBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherRealTimeBean.java index 48cf70c..03daa30 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/CaiyunWeatherRealTimeBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/caiyun/CaiyunWeatherRealTimeBean.java @@ -1,4 +1,4 @@ -package com.maning.gankmm.bean.weather; +package com.maning.gankmm.bean.weather.caiyun; /** * @author : maning @@ -69,7 +69,6 @@ public static class RealtimeEntity { private WindEntity wind; private double pressure; private double apparent_temperature; - private PrecipitationEntity precipitation; private AirQualityEntity air_quality; private LifeIndexEntity life_index; @@ -153,14 +152,6 @@ public void setApparent_temperature(double apparent_temperature) { this.apparent_temperature = apparent_temperature; } - public PrecipitationEntity getPrecipitation() { - return precipitation; - } - - public void setPrecipitation(PrecipitationEntity precipitation) { - this.precipitation = precipitation; - } - public AirQualityEntity getAir_quality() { return air_quality; } @@ -203,58 +194,6 @@ public void setDirection(double direction) { } } - public static class PrecipitationEntity { - /** - * local : {"status":"ok","datasource":"gfs","intensity":0} - */ - - private LocalEntity local; - - public LocalEntity getLocal() { - return local; - } - - public void setLocal(LocalEntity local) { - this.local = local; - } - - public static class LocalEntity { - /** - * status : ok - * datasource : gfs - * intensity : 0 - */ - - private String status; - private String datasource; - private int intensity; - - public String getStatus() { - return status; - } - - public void setStatus(String status) { - this.status = status; - } - - public String getDatasource() { - return datasource; - } - - public void setDatasource(String datasource) { - this.datasource = datasource; - } - - public int getIntensity() { - return intensity; - } - - public void setIntensity(int intensity) { - this.intensity = intensity; - } - } - } - public static class AirQualityEntity { /** * pm25 : 6 diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherBaseBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinBaseBean.java similarity index 85% rename from app/src/main/java/com/maning/gankmm/bean/weather/WeatherBaseBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinBaseBean.java index a144efe..d5ea1d9 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherBaseBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinBaseBean.java @@ -1,11 +1,11 @@ -package com.maning.gankmm.bean.weather; +package com.maning.gankmm.bean.weather.zhixin; /** * @author : maning * @date : 2020-10-14 * @desc : */ -public class WeatherBaseBean { +public class ZhixinBaseBean { private String status; private String status_code; diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinLifeSuggestionResultBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinLifeSuggestionResultBean.java new file mode 100644 index 0000000..ea3b3ca --- /dev/null +++ b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinLifeSuggestionResultBean.java @@ -0,0 +1,125 @@ +package com.maning.gankmm.bean.weather.zhixin; + +import java.util.List; + +/** + * @author : maning + * @date : 2020-10-15 + * @desc : 生活指数 + */ +public class ZhixinLifeSuggestionResultBean extends ZhixinBaseBean { + + + private List results; + + public List getResults() { + return results; + } + + public void setResults(List results) { + this.results = results; + } + + public static class ResultsEntity { + /** + * location : {"id":"WTW3SJ5ZBJUY","name":"上海","country":"CN","path":"上海,上海,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"} + * suggestion : {"car_washing":{"brief":"不宜","details":""},"dressing":{"brief":"较舒适","details":""},"flu":{"brief":"易发","details":""},"sport":{"brief":"较不宜","details":""},"travel":{"brief":"适宜","details":""},"uv":{"brief":"最弱","details":""}} + * last_update : 2020-10-15T08:32:45+08:00 + */ + + private LocationEntity location; + private ZhixinSuggestionEntity suggestion; + private String last_update; + + public LocationEntity getLocation() { + return location; + } + + public void setLocation(LocationEntity location) { + this.location = location; + } + + public ZhixinSuggestionEntity getSuggestion() { + return suggestion; + } + + public void setSuggestion(ZhixinSuggestionEntity suggestion) { + this.suggestion = suggestion; + } + + public String getLast_update() { + return last_update; + } + + public void setLast_update(String last_update) { + this.last_update = last_update; + } + + public static class LocationEntity { + /** + * id : WTW3SJ5ZBJUY + * name : 上海 + * country : CN + * path : 上海,上海,中国 + * timezone : Asia/Shanghai + * timezone_offset : +08:00 + */ + + private String id; + private String name; + private String country; + private String path; + private String timezone; + private String timezone_offset; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getPath() { + return path; + } + + public void setPath(String path) { + this.path = path; + } + + public String getTimezone() { + return timezone; + } + + public void setTimezone(String timezone) { + this.timezone = timezone; + } + + public String getTimezone_offset() { + return timezone_offset; + } + + public void setTimezone_offset(String timezone_offset) { + this.timezone_offset = timezone_offset; + } + } + + } +} diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinSuggestionEntity.java b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinSuggestionEntity.java new file mode 100644 index 0000000..2d7827a --- /dev/null +++ b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinSuggestionEntity.java @@ -0,0 +1,228 @@ +package com.maning.gankmm.bean.weather.zhixin; + +/** + * @author : maning + * @date : 2020-10-15 + * @desc : + */ +public class ZhixinSuggestionEntity { + /** + * car_washing : {"brief":"不宜","details":""} + * dressing : {"brief":"较舒适","details":""} + * flu : {"brief":"易发","details":""} + * sport : {"brief":"较不宜","details":""} + * travel : {"brief":"适宜","details":""} + * uv : {"brief":"最弱","details":""} + */ + + private CarWashingEntity car_washing; + private DressingEntity dressing; + private FluEntity flu; + private SportEntity sport; + private TravelEntity travel; + private UvEntity uv; + + public CarWashingEntity getCar_washing() { + return car_washing; + } + + public void setCar_washing(CarWashingEntity car_washing) { + this.car_washing = car_washing; + } + + public DressingEntity getDressing() { + return dressing; + } + + public void setDressing(DressingEntity dressing) { + this.dressing = dressing; + } + + public FluEntity getFlu() { + return flu; + } + + public void setFlu(FluEntity flu) { + this.flu = flu; + } + + public SportEntity getSport() { + return sport; + } + + public void setSport(SportEntity sport) { + this.sport = sport; + } + + public TravelEntity getTravel() { + return travel; + } + + public void setTravel(TravelEntity travel) { + this.travel = travel; + } + + public UvEntity getUv() { + return uv; + } + + public void setUv(UvEntity uv) { + this.uv = uv; + } + + public static class CarWashingEntity { + /** + * brief : 不宜 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } + + public static class DressingEntity { + /** + * brief : 较舒适 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } + + public static class FluEntity { + /** + * brief : 易发 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } + + public static class SportEntity { + /** + * brief : 较不宜 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } + + public static class TravelEntity { + /** + * brief : 适宜 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } + + public static class UvEntity { + /** + * brief : 最弱 + * details : + */ + + private String brief; + private String details; + + public String getBrief() { + return brief; + } + + public void setBrief(String brief) { + this.brief = brief; + } + + public String getDetails() { + return details; + } + + public void setDetails(String details) { + this.details = details; + } + } +} diff --git a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherNowBean.java b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinWeatherRealtimeBean.java similarity index 98% rename from app/src/main/java/com/maning/gankmm/bean/weather/WeatherNowBean.java rename to app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinWeatherRealtimeBean.java index 5673127..bd44ca4 100644 --- a/app/src/main/java/com/maning/gankmm/bean/weather/WeatherNowBean.java +++ b/app/src/main/java/com/maning/gankmm/bean/weather/zhixin/ZhixinWeatherRealtimeBean.java @@ -1,4 +1,4 @@ -package com.maning.gankmm.bean.weather; +package com.maning.gankmm.bean.weather.zhixin; import java.util.List; @@ -7,7 +7,7 @@ * @date : 2020-10-14 * @desc : 天气实况 */ -public class WeatherNowBean extends WeatherBaseBean{ +public class ZhixinWeatherRealtimeBean extends ZhixinBaseBean { private List results; diff --git a/app/src/main/java/com/maning/gankmm/http/callback/CommonHttpCallback.java b/app/src/main/java/com/maning/gankmm/http/callback/CommonHttpCallback.java index 85c1a50..2030415 100644 --- a/app/src/main/java/com/maning/gankmm/http/callback/CommonHttpCallback.java +++ b/app/src/main/java/com/maning/gankmm/http/callback/CommonHttpCallback.java @@ -3,8 +3,8 @@ import android.text.TextUtils; import com.maning.gankmm.bean.gank2.Gank2BaseBean; -import com.maning.gankmm.bean.weather.CaiyunWeatherBaseBean; -import com.maning.gankmm.bean.weather.WeatherBaseBean; +import com.maning.gankmm.bean.weather.caiyun.CaiyunWeatherBaseBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinBaseBean; import java.net.ConnectException; import java.net.SocketTimeoutException; @@ -44,12 +44,12 @@ public void onResponse(Call call, Response response) { } else { onFail(1000, "彩云天气接口出错啦~~~"); } - } else if (body instanceof WeatherBaseBean) { - WeatherBaseBean weatherBaseBean = (WeatherBaseBean) response.body(); - if (TextUtils.isEmpty(weatherBaseBean.getStatus())) { + } else if (body instanceof ZhixinBaseBean) { + ZhixinBaseBean zhixinBaseBean = (ZhixinBaseBean) response.body(); + if (TextUtils.isEmpty(zhixinBaseBean.getStatus())) { onSuccess(response.body()); } else { - onFail(1000, weatherBaseBean.getStatus()); + onFail(1000, zhixinBaseBean.getStatus()); } } else { onSuccess(body); diff --git a/app/src/main/java/com/maning/gankmm/http/weather/APIWeatherService.java b/app/src/main/java/com/maning/gankmm/http/weather/APIWeatherService.java index f4ec1aa..a1b12e4 100644 --- a/app/src/main/java/com/maning/gankmm/http/weather/APIWeatherService.java +++ b/app/src/main/java/com/maning/gankmm/http/weather/APIWeatherService.java @@ -1,12 +1,12 @@ package com.maning.gankmm.http.weather; -import com.maning.gankmm.bean.weather.CaiyunWeatherRealTimeBean; -import com.maning.gankmm.bean.weather.WeatherNowBean; +import com.maning.gankmm.bean.weather.caiyun.CaiyunWeatherRealTimeBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinLifeSuggestionResultBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinWeatherRealtimeBean; import retrofit2.Call; import retrofit2.http.GET; import retrofit2.http.Headers; -import retrofit2.http.POST; import retrofit2.http.Path; import retrofit2.http.Query; @@ -20,11 +20,20 @@ public interface APIWeatherService { //https://api.seniverse.com/v3/weather/now.json?key=SkAwmmz_N361lNLX3&location=beijing&language=zh-Hans&unit=c @Headers("Cache-Control: public, max-age=120") @GET("weather/now.json") - Call getWeatherNow( + Call getWeatherNow( @Query("key") String key, @Query("location") String location ); + //https://api.seniverse.com/v3/life/suggestion.json?key=SkAwmmz_N361lNLX3&location=shanghai&language=zh-Hans + @Headers("Cache-Control: public, max-age=120") + @GET("life/suggestion.json") + Call getLifeSuggestion( + @Query("key") String key, + @Query("location") String location + ); + + @Headers("Cache-Control: public, max-age=120") @GET("https://api.caiyunapp.com/v2.5/Ry1gwjRU7ru2kosN/{location}/realtime.json") Call getWeatherFromCaiyun(@Path("location") String location ); diff --git a/app/src/main/java/com/maning/gankmm/http/weather/WeatherApi.java b/app/src/main/java/com/maning/gankmm/http/weather/WeatherApi.java index 1783d54..af09154 100644 --- a/app/src/main/java/com/maning/gankmm/http/weather/WeatherApi.java +++ b/app/src/main/java/com/maning/gankmm/http/weather/WeatherApi.java @@ -2,9 +2,10 @@ import android.text.TextUtils; -import com.maning.gankmm.bean.weather.CaiyunWeatherRealTimeBean; -import com.maning.gankmm.bean.weather.WeatherBean; -import com.maning.gankmm.bean.weather.WeatherNowBean; +import com.maning.gankmm.bean.weather.caiyun.CaiyunWeatherRealTimeBean; +import com.maning.gankmm.bean.weather.WeatherInfoBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinLifeSuggestionResultBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinWeatherRealtimeBean; import com.maning.gankmm.http.BuildApi; import com.maning.gankmm.http.callback.CommonHttpCallback; @@ -18,45 +19,66 @@ public class WeatherApi { public interface OnWeatherCallback { - void onSuccess(WeatherBean weatherBean); + void onSuccess(WeatherInfoBean weatherInfoBean); void onFail(String msg); } - + private static final String ZHIXIN_KEY = "SkAwmmz_N361lNLX3"; + + + /** + * 生活指数 + * + * @param longitude + * @param latitude + */ + public static void getLifeSuggestionFromZhixin(double longitude, double latitude, CommonHttpCallback httpCallback) { + //经纬度(格式是 纬度:经度,英文冒号分隔) + String location = latitude + ":" + longitude; + BuildApi.getWeatherAPIService().getLifeSuggestion(ZHIXIN_KEY, location).enqueue(httpCallback); + } + + /** + * 天气实况 + * + * @param longitude + * @param latitude + * @param onWeatherCallback + */ public static void getWeatherFromZhixin(double longitude, double latitude, final OnWeatherCallback onWeatherCallback) { //经纬度(格式是 纬度:经度,英文冒号分隔) String location = latitude + ":" + longitude; - BuildApi.getWeatherAPIService().getWeatherNow("SkAwmmz_N361lNLX3", location).enqueue(new CommonHttpCallback() { + BuildApi.getWeatherAPIService().getWeatherNow(ZHIXIN_KEY, location).enqueue(new CommonHttpCallback() { @Override - public void onSuccess(WeatherNowBean result) { + public void onSuccess(ZhixinWeatherRealtimeBean result) { if (result == null || result.getResults() == null || result.getResults().size() == 0) { if (onWeatherCallback != null) { onWeatherCallback.onFail("天气数据获取异常"); } return; } - WeatherNowBean.ResultsEntity resultsEntity = result.getResults().get(0); + ZhixinWeatherRealtimeBean.ResultsEntity resultsEntity = result.getResults().get(0); if (resultsEntity == null) { if (onWeatherCallback != null) { onWeatherCallback.onFail("天气数据获取异常"); } return; } - WeatherNowBean.ResultsEntity.NowEntity nowEntity = resultsEntity.getNow(); - - WeatherBean weatherBean = new WeatherBean(); - weatherBean.setWeather_desc(nowEntity.getText()); - weatherBean.setFeels_like(nowEntity.getFeels_like()); - weatherBean.setHumidity(nowEntity.getHumidity()); - weatherBean.setPressure(nowEntity.getPressure()); - weatherBean.setTemperature(nowEntity.getTemperature()); - weatherBean.setVisibility(nowEntity.getVisibility()); - weatherBean.setWind_direction(nowEntity.getWind_direction()); - weatherBean.setWind_scale(nowEntity.getWind_scale()); - weatherBean.setWind_speed(nowEntity.getWind_speed()); + ZhixinWeatherRealtimeBean.ResultsEntity.NowEntity nowEntity = resultsEntity.getNow(); + + WeatherInfoBean weatherInfoBean = new WeatherInfoBean(); + weatherInfoBean.setWeather_desc(nowEntity.getText()); + weatherInfoBean.setFeels_like(nowEntity.getFeels_like()); + weatherInfoBean.setHumidity(nowEntity.getHumidity()); + weatherInfoBean.setPressure(nowEntity.getPressure()); + weatherInfoBean.setTemperature(nowEntity.getTemperature()); + weatherInfoBean.setVisibility(nowEntity.getVisibility()); + weatherInfoBean.setWind_direction(nowEntity.getWind_direction()); + weatherInfoBean.setWind_scale(nowEntity.getWind_scale()); + weatherInfoBean.setWind_speed(nowEntity.getWind_speed()); if (onWeatherCallback != null) { - onWeatherCallback.onSuccess(weatherBean); + onWeatherCallback.onSuccess(weatherInfoBean); } } @@ -69,6 +91,13 @@ public void onFail(int code, String message) { }); } + /** + * 天气实况 + * + * @param longitude + * @param latitude + * @param onWeatherCallback + */ public static void getWeatherFromCaiyun(double longitude, double latitude, final OnWeatherCallback onWeatherCallback) { String location = longitude + "," + latitude; BuildApi.getWeatherAPIService().getWeatherFromCaiyun(location).enqueue(new CommonHttpCallback() { @@ -83,20 +112,20 @@ public void onSuccess(CaiyunWeatherRealTimeBean caiyunWeatherRealTimeBean) { return; } - WeatherBean weatherBean = new WeatherBean(); - weatherBean.setWeather_desc(CaiyunUtils.getWeatherText(realtime.getSkycon())); - weatherBean.setTemperature(String.valueOf(realtime.getTemperature())); - weatherBean.setFeels_like(String.valueOf(realtime.getApparent_temperature())); - weatherBean.setHumidity(String.valueOf(realtime.getHumidity() * 100)); - weatherBean.setPressure(String.valueOf(realtime.getPressure())); - weatherBean.setVisibility(String.valueOf(realtime.getVisibility())); + WeatherInfoBean weatherInfoBean = new WeatherInfoBean(); + weatherInfoBean.setWeather_desc(CaiyunUtils.getWeatherText(realtime.getSkycon())); + weatherInfoBean.setTemperature(String.valueOf(realtime.getTemperature())); + weatherInfoBean.setFeels_like(String.valueOf(realtime.getApparent_temperature())); + weatherInfoBean.setHumidity(String.valueOf(realtime.getHumidity() * 100)); + weatherInfoBean.setPressure(String.valueOf(realtime.getPressure())); + weatherInfoBean.setVisibility(String.valueOf(realtime.getVisibility())); if (realtime.getWind() != null) { - weatherBean.setWind_direction(CaiyunUtils.getWindDirection(realtime.getWind().getDirection())); - weatherBean.setWind_scale(String.valueOf(CaiyunUtils.getWindScale(realtime.getWind().getSpeed()))); - weatherBean.setWind_speed(String.valueOf(realtime.getWind().getSpeed())); + weatherInfoBean.setWind_direction(CaiyunUtils.getWindDirection(realtime.getWind().getDirection())); + weatherInfoBean.setWind_scale(String.valueOf(CaiyunUtils.getWindScale(realtime.getWind().getSpeed()))); + weatherInfoBean.setWind_speed(String.valueOf(realtime.getWind().getSpeed())); } if (onWeatherCallback != null) { - onWeatherCallback.onSuccess(weatherBean); + onWeatherCallback.onSuccess(weatherInfoBean); } } diff --git a/app/src/main/java/com/maning/gankmm/ui/activity/MainActivity.java b/app/src/main/java/com/maning/gankmm/ui/activity/MainActivity.java index 3719d0e..c4c5428 100644 --- a/app/src/main/java/com/maning/gankmm/ui/activity/MainActivity.java +++ b/app/src/main/java/com/maning/gankmm/ui/activity/MainActivity.java @@ -25,10 +25,8 @@ import com.maning.gankmm.R; import com.maning.gankmm.bean.fir.AppUpdateInfo; import com.maning.gankmm.bean.gank2.GankEntity; -import com.maning.gankmm.bean.mob.WeatherBeseEntity; import com.maning.gankmm.bean.mob.MobUserInfo; -import com.maning.gankmm.bean.weather.WeatherBean; -import com.maning.gankmm.bean.weather.WeatherNowBean; +import com.maning.gankmm.bean.weather.WeatherInfoBean; import com.maning.gankmm.constant.Constants; import com.maning.gankmm.skin.SkinBroadcastReceiver; import com.maning.gankmm.skin.SkinManager; @@ -97,12 +95,13 @@ public class MainActivity extends BaseActivity implements IMainView, View.OnClic private NotifyUtil notifyUtils; - private WeatherBeseEntity.WeatherBean weatherEntity; - private List welFareList; private String provinceName; private String cityName; + private double longitude, latitude; + private TextView header_tv_weather; + private WeatherInfoBean weatherInfoBean; @Override protected void onCreate(Bundle savedInstanceState) { @@ -555,13 +554,16 @@ public void onClick(View view) { break; case R.id.rl_weather: //切换城市 - if (weatherEntity != null) { + if (weatherInfoBean != null) { + weatherInfoBean.setCity_name(cityName); + weatherInfoBean.setLatitude(latitude); + weatherInfoBean.setLongitude(longitude); Intent intent_weather = new Intent(MainActivity.this, WeatherActivity.class); - intent_weather.putExtra(WeatherActivity.intentKey_weatherBean, weatherEntity); + intent_weather.putExtra(WeatherActivity.intentKey_weatherBean, weatherInfoBean); intent_weather.putExtra(WeatherActivity.intentKey_weatherProvinceName, provinceName); intent_weather.putExtra(WeatherActivity.intentKey_weatherCityName, cityName); if (welFareList != null && welFareList.size() > 0) { - intent_weather.putStringArrayListExtra(WeatherActivity.intentKey_bg_url, (ArrayList) welFareList); + intent_weather.putStringArrayListExtra(WeatherActivity.intentKey_bgUrls, (ArrayList) welFareList); } startActivity(intent_weather); } @@ -570,26 +572,29 @@ public void onClick(View view) { } @Override - public void initWeatherInfo(WeatherBean weatherBean) { + public void initWeatherInfo(WeatherInfoBean weatherInfoBean) { + this.weatherInfoBean = weatherInfoBean; //天气 - String weather = weatherBean.getWeather_desc(); + String weather = weatherInfoBean.getWeather_desc(); //城市 header_tv_city_name.setText(provinceName + "-" + cityName); //赋值 - header_tv_temperature.setText(weatherBean.getTemperature() + "°"); + header_tv_temperature.setText(weatherInfoBean.getTemperature() + "°"); header_tv_weather.setText(weather); header_iv_weather.setImageDrawable(getResources().getDrawable(SharePreUtil.getIntData(context, weather, R.drawable.icon_weather_none))); //其他数据可能没有 - tv_weather_wind_direction.setText(weatherBean.getWind_direction() + "风"); - tv_weather_wind_scale.setText(weatherBean.getWind_scale() + "级"); - tv_weather_feels_like.setText(weatherBean.getFeels_like() + "°"); - tv_weather_humidity.setText(weatherBean.getHumidity() + "%"); + tv_weather_wind_direction.setText(weatherInfoBean.getWind_direction() + "风"); + tv_weather_wind_scale.setText(weatherInfoBean.getWind_scale() + "级"); + tv_weather_feels_like.setText(weatherInfoBean.getFeels_like() + "°"); + tv_weather_humidity.setText(weatherInfoBean.getHumidity() + "%"); } @Override - public void updateLocationInfo(String provinceName, String cityName) { + public void updateLocationInfo(String provinceName, String cityName, double longitude, double latitude) { this.provinceName = provinceName; this.cityName = cityName; + this.longitude = longitude; + this.latitude = latitude; } @Override diff --git a/app/src/main/java/com/maning/gankmm/ui/activity/WeatherActivity.java b/app/src/main/java/com/maning/gankmm/ui/activity/WeatherActivity.java index 7039950..23bf8ab 100644 --- a/app/src/main/java/com/maning/gankmm/ui/activity/WeatherActivity.java +++ b/app/src/main/java/com/maning/gankmm/ui/activity/WeatherActivity.java @@ -20,7 +20,8 @@ import com.maning.gankmm.R; import com.maning.gankmm.bean.mob.CalendarInfoEntity; import com.maning.gankmm.bean.gank2.GankEntity; -import com.maning.gankmm.bean.mob.WeatherBeseEntity; +import com.maning.gankmm.bean.weather.WeatherInfoBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinSuggestionEntity; import com.maning.gankmm.ui.adapter.WeatherAdapter; import com.maning.gankmm.ui.base.BaseActivity; import com.maning.gankmm.ui.iView.IWeatherView; @@ -44,7 +45,7 @@ public class WeatherActivity extends BaseActivity implements OnRefreshListener, public static final String intentKey_weatherBean = "intentKey_weatherBean"; public static final String intentKey_weatherProvinceName = "intentKey_weatherProvinceName"; public static final String intentKey_weatherCityName = "intentKey_weatherCityName"; - public static final String intentKey_bg_url = "intentKey_bg_url"; + public static final String intentKey_bgUrls = "intentKey_bgUrls"; private static final String TAG = "WeatherActivity"; private static final float defaultAlpha = 0.0f; private static final float maxAlpha = 1.0f; @@ -65,13 +66,15 @@ public class WeatherActivity extends BaseActivity implements OnRefreshListener, SwipeToLoadLayout swipeToLoadLayout; private CalendarInfoEntity calendarInfoEntity; - private WeatherBeseEntity.WeatherBean weatherEntity; + private WeatherInfoBean weatherInfoBean; + private ZhixinSuggestionEntity lifeSuggestionBean; private WeatherAdapter weatherAdapter; private String bgPicUrl; private String provinceName; private String cityName; - private List welFareList; + private List girlsList; + private double longitude, latitude; private WeatherPresenterImpl weatherPresenter; @@ -98,15 +101,16 @@ protected void onCreate(Bundle savedInstanceState) { public void initPresenter() { weatherPresenter = new WeatherPresenterImpl(this, this); + weatherPresenter.getLifeSuggestion(longitude,latitude); weatherPresenter.getCalendarInfo(); } private void initBackgroundPic() { - if (welFareList != null && welFareList.size() > 0) { + if (girlsList != null && girlsList.size() > 0) { Random random = new Random(); - int randomIndex = random.nextInt(welFareList.size() - 1); - bgPicUrl = welFareList.get(randomIndex).getUrl(); + int randomIndex = random.nextInt(girlsList.size() - 1); + bgPicUrl = girlsList.get(randomIndex).getUrl(); if (!TextUtils.isEmpty(bgPicUrl)) { RequestOptions options = new RequestOptions(); options.centerCrop(); @@ -135,8 +139,8 @@ public void onResourceReady(Bitmap resource, Transition transiti } private void initViews() { - if (weatherEntity != null) { - tvTitle.setText(weatherEntity.getCity()); + if (weatherInfoBean != null) { + tvTitle.setText(weatherInfoBean.getCity_name()); } //初始化RecycleView @@ -180,10 +184,14 @@ public void onScrolled(RecyclerView recyclerView, int dx, int dy) { } private void initIntent() { - weatherEntity = (WeatherBeseEntity.WeatherBean) getIntent().getSerializableExtra(intentKey_weatherBean); - welFareList = (List) getIntent().getSerializableExtra(intentKey_bg_url); + weatherInfoBean = (WeatherInfoBean) getIntent().getSerializableExtra(intentKey_weatherBean); + girlsList = (List) getIntent().getSerializableExtra(intentKey_bgUrls); provinceName = getIntent().getStringExtra(intentKey_weatherProvinceName); cityName = getIntent().getStringExtra(intentKey_weatherCityName); + if (weatherInfoBean != null) { + longitude = weatherInfoBean.getLongitude(); + latitude = weatherInfoBean.getLatitude(); + } } @OnClick(R.id.rl_back) @@ -193,10 +201,10 @@ public void backBtn() { private void initAdapter() { if (weatherAdapter == null) { - weatherAdapter = new WeatherAdapter(this, weatherEntity, calendarInfoEntity); + weatherAdapter = new WeatherAdapter(this, weatherInfoBean, calendarInfoEntity, lifeSuggestionBean); swipeTarget.setAdapter(weatherAdapter); } else { - weatherAdapter.updateDatas(weatherEntity, calendarInfoEntity); + weatherAdapter.updateDatas(weatherInfoBean, calendarInfoEntity, lifeSuggestionBean); } } @@ -204,7 +212,8 @@ private void initAdapter() { @Override public void onRefresh() { if (weatherPresenter != null) { - weatherPresenter.getCityWeather(provinceName, cityName); + weatherPresenter.getCityWeather(provinceName, cityName, longitude, latitude); + weatherPresenter.getLifeSuggestion(longitude, latitude); } } @@ -214,12 +223,18 @@ public void showToast(String msg) { } @Override - public void initWeatherInfo(WeatherBeseEntity.WeatherBean weatherEntity) { - this.weatherEntity = weatherEntity; + public void initWeatherInfo(WeatherInfoBean weatherInfoBean) { + this.weatherInfoBean = weatherInfoBean; initAdapter(); initBackgroundPic(); } + @Override + public void initLifeSuggestionInfo(ZhixinSuggestionEntity lifeSuggestionBean) { + this.lifeSuggestionBean = lifeSuggestionBean; + initAdapter(); + } + @Override public void overRefresh() { swipeToLoadLayout.setRefreshing(false); diff --git a/app/src/main/java/com/maning/gankmm/ui/adapter/WeatherAdapter.java b/app/src/main/java/com/maning/gankmm/ui/adapter/WeatherAdapter.java index f50ce34..bfcf169 100644 --- a/app/src/main/java/com/maning/gankmm/ui/adapter/WeatherAdapter.java +++ b/app/src/main/java/com/maning/gankmm/ui/adapter/WeatherAdapter.java @@ -12,6 +12,8 @@ import com.maning.gankmm.R; import com.maning.gankmm.bean.mob.CalendarInfoEntity; import com.maning.gankmm.bean.mob.WeatherBeseEntity; +import com.maning.gankmm.bean.weather.WeatherInfoBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinSuggestionEntity; import com.maning.gankmm.ui.view.ArcProgressView; import com.yqritc.recyclerviewflexibledivider.VerticalDividerItemDecoration; @@ -25,21 +27,24 @@ public class WeatherAdapter extends RecyclerView.Adapter { private Context mContext; - private WeatherBeseEntity.WeatherBean weatherEntity; + private WeatherInfoBean weatherEntity; private CalendarInfoEntity calendarInfoEntity; private LayoutInflater layoutInflater; + private ZhixinSuggestionEntity lifeSuggestionBean; - public WeatherAdapter(Context context, WeatherBeseEntity.WeatherBean weatherEntity, CalendarInfoEntity calendarInfoEntity) { + public WeatherAdapter(Context context, WeatherInfoBean weatherEntity, CalendarInfoEntity calendarInfoEntity, ZhixinSuggestionEntity lifeSuggestionBean) { this.mContext = context; this.weatherEntity = weatherEntity; this.calendarInfoEntity = calendarInfoEntity; + this.lifeSuggestionBean = lifeSuggestionBean; layoutInflater = LayoutInflater.from(this.mContext); } - public void updateDatas(WeatherBeseEntity.WeatherBean weatherEntity, CalendarInfoEntity calendarInfoEntity) { + public void updateDatas(WeatherInfoBean weatherEntity, CalendarInfoEntity calendarInfoEntity, ZhixinSuggestionEntity lifeSuggestionBean) { this.weatherEntity = weatherEntity; this.calendarInfoEntity = calendarInfoEntity; + this.lifeSuggestionBean = lifeSuggestionBean; notifyDataSetChanged(); } @@ -52,8 +57,8 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType View inflate = layoutInflater.inflate(R.layout.item_weather_later, parent, false); return new WeatherAdapter.MyViewHolder02(inflate); } else if (viewType == 2) { - View inflate = layoutInflater.inflate(R.layout.item_weather_air, parent, false); - return new WeatherAdapter.MyViewHolder03(inflate); + View inflate = layoutInflater.inflate(R.layout.item_weather_suggestion, parent, false); + return new WeatherAdapter.MyViewHolderSuggestion(inflate); } else if (viewType == 3) { View inflate = layoutInflater.inflate(R.layout.item_weather_calendar, parent, false); return new WeatherAdapter.MyViewHolder04(inflate); @@ -66,11 +71,11 @@ public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof MyViewHolder01) { final MyViewHolder01 myViewHolder01 = (MyViewHolder01) holder; - myViewHolder01.tv_01.setText(weatherEntity.getTemperature()); - myViewHolder01.tv_02.setText(weatherEntity.getWeather()); - myViewHolder01.tv_03.setText(weatherEntity.getFuture().get(0).getTemperature()); - myViewHolder01.tv_04.setText(weatherEntity.getAirCondition()); - myViewHolder01.tv_05.setText(weatherEntity.getWind()); + myViewHolder01.tv_01.setText(weatherEntity.getTemperature() + "°"); + myViewHolder01.tv_02.setText(weatherEntity.getWeather_desc()); + myViewHolder01.tv_03.setText("湿度:" + weatherEntity.getHumidity() + "%"); + myViewHolder01.tv_04.setText("体感:" + weatherEntity.getFeels_like() + "°"); + myViewHolder01.tv_05.setText(weatherEntity.getWind_direction() + " " + weatherEntity.getWind_scale() + "级"); } else if (holder instanceof MyViewHolder02) { final MyViewHolder02 myViewHolder02 = (MyViewHolder02) holder; @@ -81,13 +86,27 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { myViewHolder02.recycle_later.setItemAnimator(new DefaultItemAnimator()); myViewHolder02.recycle_later.addItemDecoration(new VerticalDividerItemDecoration.Builder(mContext).color(mContext.getResources().getColor(R.color.lineColor)).build()); - Weather2Adapter weather2Adapter = new Weather2Adapter(mContext, weatherEntity); - myViewHolder02.recycle_later.setAdapter(weather2Adapter); - - } else if (holder instanceof MyViewHolder03) { - final MyViewHolder03 myViewHolder03 = (MyViewHolder03) holder; - String pollutionIndex = weatherEntity.getPollutionIndex(); - myViewHolder03.arc_progress.setCurrentCount(500, Integer.parseInt(pollutionIndex)); +// Weather2Adapter weather2Adapter = new Weather2Adapter(mContext, weatherEntity); +// myViewHolder02.recycle_later.setAdapter(weather2Adapter); + + } else if (holder instanceof MyViewHolderSuggestion) { + final MyViewHolderSuggestion viewHolderSuggestion = (MyViewHolderSuggestion) holder; + //生活指数 + if (lifeSuggestionBean != null) { + viewHolderSuggestion.tv_suggestion_01.setText(lifeSuggestionBean.getCar_washing().getBrief()); + viewHolderSuggestion.tv_suggestion_02.setText(lifeSuggestionBean.getDressing().getBrief()); + viewHolderSuggestion.tv_suggestion_03.setText(lifeSuggestionBean.getFlu().getBrief()); + viewHolderSuggestion.tv_suggestion_04.setText(lifeSuggestionBean.getSport().getBrief()); + viewHolderSuggestion.tv_suggestion_05.setText(lifeSuggestionBean.getTravel().getBrief()); + viewHolderSuggestion.tv_suggestion_06.setText(lifeSuggestionBean.getUv().getBrief()); + }else{ + viewHolderSuggestion.tv_suggestion_01.setText("洗车"); + viewHolderSuggestion.tv_suggestion_02.setText("穿衣"); + viewHolderSuggestion.tv_suggestion_03.setText("感冒"); + viewHolderSuggestion.tv_suggestion_04.setText("运动"); + viewHolderSuggestion.tv_suggestion_05.setText("旅游"); + viewHolderSuggestion.tv_suggestion_06.setText("紫外线"); + } } else if (holder instanceof MyViewHolder04) { final MyViewHolder04 myViewHolder04 = (MyViewHolder04) holder; @@ -145,12 +164,33 @@ public MyViewHolder02(View itemView) { } } - public static class MyViewHolder03 extends RecyclerView.ViewHolder { + public static class MyViewHolderSuggestion extends RecyclerView.ViewHolder { + + @Bind(R.id.tv_suggestion_01) + TextView tv_suggestion_01; + @Bind(R.id.tv_suggestion_02) + TextView tv_suggestion_02; + @Bind(R.id.tv_suggestion_03) + TextView tv_suggestion_03; + @Bind(R.id.tv_suggestion_04) + TextView tv_suggestion_04; + @Bind(R.id.tv_suggestion_05) + TextView tv_suggestion_05; + @Bind(R.id.tv_suggestion_06) + TextView tv_suggestion_06; + + public MyViewHolderSuggestion(View itemView) { + super(itemView); + ButterKnife.bind(this, itemView); + } + } + + public static class MyViewHolderAir extends RecyclerView.ViewHolder { @Bind(R.id.arc_progress) ArcProgressView arc_progress; - public MyViewHolder03(View itemView) { + public MyViewHolderAir(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } diff --git a/app/src/main/java/com/maning/gankmm/ui/iView/IMainView.java b/app/src/main/java/com/maning/gankmm/ui/iView/IMainView.java index 3a7ec4f..8444861 100644 --- a/app/src/main/java/com/maning/gankmm/ui/iView/IMainView.java +++ b/app/src/main/java/com/maning/gankmm/ui/iView/IMainView.java @@ -1,9 +1,7 @@ package com.maning.gankmm.ui.iView; import com.maning.gankmm.bean.fir.AppUpdateInfo; -import com.maning.gankmm.bean.mob.WeatherBeseEntity; -import com.maning.gankmm.bean.weather.WeatherBean; -import com.maning.gankmm.bean.weather.WeatherNowBean; +import com.maning.gankmm.bean.weather.WeatherInfoBean; /** * Created by maning on 16/6/21. @@ -14,8 +12,8 @@ public interface IMainView { void showAppUpdateDialog(AppUpdateInfo appUpdateInfo); - void initWeatherInfo(WeatherBean weatherBean); + void initWeatherInfo(WeatherInfoBean weatherInfoBean); - void updateLocationInfo(String provinceName, String cityName); + void updateLocationInfo(String provinceName, String cityName, double longitude, double latitude); } diff --git a/app/src/main/java/com/maning/gankmm/ui/iView/IWeatherView.java b/app/src/main/java/com/maning/gankmm/ui/iView/IWeatherView.java index 1e99a65..a515528 100644 --- a/app/src/main/java/com/maning/gankmm/ui/iView/IWeatherView.java +++ b/app/src/main/java/com/maning/gankmm/ui/iView/IWeatherView.java @@ -2,6 +2,8 @@ import com.maning.gankmm.bean.mob.CalendarInfoEntity; import com.maning.gankmm.bean.mob.WeatherBeseEntity; +import com.maning.gankmm.bean.weather.WeatherInfoBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinSuggestionEntity; /** * Created by maning on 16/6/21. @@ -10,7 +12,9 @@ public interface IWeatherView { void showToast(String msg); - void initWeatherInfo(WeatherBeseEntity.WeatherBean weatherEntity); + void initWeatherInfo(WeatherInfoBean weatherInfoBean); + + void initLifeSuggestionInfo(ZhixinSuggestionEntity suggestion); void overRefresh(); diff --git a/app/src/main/java/com/maning/gankmm/ui/presenter/IWeatherPresenter.java b/app/src/main/java/com/maning/gankmm/ui/presenter/IWeatherPresenter.java index c17d6d6..225b4db 100644 --- a/app/src/main/java/com/maning/gankmm/ui/presenter/IWeatherPresenter.java +++ b/app/src/main/java/com/maning/gankmm/ui/presenter/IWeatherPresenter.java @@ -5,8 +5,9 @@ */ public interface IWeatherPresenter { - void getCityWeather(String provinceName, String cityName); + void getCityWeather(String provinceName, String cityName, double longitude, double latitude); - //万年历查询 void getCalendarInfo(); + + void getLifeSuggestion(double longitude, double latitude); } diff --git a/app/src/main/java/com/maning/gankmm/ui/presenter/impl/MainPresenterImpl.java b/app/src/main/java/com/maning/gankmm/ui/presenter/impl/MainPresenterImpl.java index 04b671e..ad72f9e 100644 --- a/app/src/main/java/com/maning/gankmm/ui/presenter/impl/MainPresenterImpl.java +++ b/app/src/main/java/com/maning/gankmm/ui/presenter/impl/MainPresenterImpl.java @@ -1,18 +1,13 @@ package com.maning.gankmm.ui.presenter.impl; import android.content.Context; -import android.text.TextUtils; import com.amap.api.location.AMapLocation; import com.maning.gankmm.R; import com.maning.gankmm.app.MyApplication; import com.maning.gankmm.bean.fir.AppUpdateInfo; -import com.maning.gankmm.bean.mob.WeatherBeseEntity; -import com.maning.gankmm.bean.weather.WeatherBean; -import com.maning.gankmm.bean.weather.WeatherNowBean; +import com.maning.gankmm.bean.weather.WeatherInfoBean; import com.maning.gankmm.constant.Constants; -import com.maning.gankmm.http.callback.MyCallBack; -import com.maning.gankmm.http.mob.MobApi; import com.maning.gankmm.http.update.UpdateApi; import com.maning.gankmm.http.callback.CommonHttpCallback; import com.maning.gankmm.http.weather.WeatherApi; @@ -23,8 +18,6 @@ import com.maning.gankmm.utils.PermissionUtils; import com.maning.gankmm.utils.SharePreUtil; -import java.util.List; - /** * Created by maning on 16/6/21. */ @@ -160,11 +153,11 @@ public void onComplete() { @Override public void getCityWeather(String provinceName, String cityName, double longitude, double latitude) { - mView.updateLocationInfo(provinceName, cityName); + mView.updateLocationInfo(provinceName, cityName, longitude, latitude); WeatherApi.getWeatherFromCaiyun(longitude, latitude, new WeatherApi.OnWeatherCallback() { @Override - public void onSuccess(WeatherBean weatherBean) { - mView.initWeatherInfo(weatherBean); + public void onSuccess(WeatherInfoBean weatherInfoBean) { + mView.initWeatherInfo(weatherInfoBean); } @Override diff --git a/app/src/main/java/com/maning/gankmm/ui/presenter/impl/WeatherPresenterImpl.java b/app/src/main/java/com/maning/gankmm/ui/presenter/impl/WeatherPresenterImpl.java index 64f905e..cfa27de 100644 --- a/app/src/main/java/com/maning/gankmm/ui/presenter/impl/WeatherPresenterImpl.java +++ b/app/src/main/java/com/maning/gankmm/ui/presenter/impl/WeatherPresenterImpl.java @@ -4,9 +4,13 @@ import android.text.TextUtils; import com.maning.gankmm.bean.mob.CalendarInfoEntity; -import com.maning.gankmm.bean.mob.WeatherBeseEntity; +import com.maning.gankmm.bean.weather.WeatherInfoBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinLifeSuggestionResultBean; +import com.maning.gankmm.bean.weather.zhixin.ZhixinSuggestionEntity; +import com.maning.gankmm.http.callback.CommonHttpCallback; import com.maning.gankmm.http.callback.MyCallBack; import com.maning.gankmm.http.mob.MobApi; +import com.maning.gankmm.http.weather.WeatherApi; import com.maning.gankmm.ui.iView.IWeatherView; import com.maning.gankmm.ui.presenter.IWeatherPresenter; @@ -25,23 +29,6 @@ public class WeatherPresenterImpl extends BasePresenterImpl implem @Override public void onSuccessList(int what, List results) { mView.overRefresh(); - if (mView == null) { - return; - } - if (results == null) { - return; - } - switch (what) { - case 0x003: - List weathers = results; - if (weathers.size() > 0) { - WeatherBeseEntity.WeatherBean resultBean = weathers.get(0); - if (resultBean != null) { - mView.initWeatherInfo(resultBean); - } - } - break; - } } @Override @@ -63,7 +50,7 @@ public void onSuccess(int what, Object result) { @Override public void onFail(int what, String result) { - if(mView == null){ + if (mView == null) { return; } mView.overRefresh(); @@ -79,8 +66,21 @@ public WeatherPresenterImpl(Context context, IWeatherView iWeatherView) { } @Override - public void getCityWeather(String provinceName, String cityName) { -// MobApi.getCityWeather(cityName, provinceName, 0x003, httpCallBack); + public void getCityWeather(String provinceName, String cityName, double longitude, double latitude) { + WeatherApi.getWeatherFromCaiyun(longitude, latitude, new WeatherApi.OnWeatherCallback() { + @Override + public void onSuccess(WeatherInfoBean weatherInfoBean) { + mView.initWeatherInfo(weatherInfoBean); + mView.overRefresh(); + } + + @Override + public void onFail(String msg) { + mView.showToast(msg); + mView.overRefresh(); + } + }); + } @Override @@ -90,4 +90,24 @@ public void getCalendarInfo() { String date = sdf.format(new java.util.Date()); MobApi.getCalendarInfo(date, 0x001, httpCallBack); } + + @Override + public void getLifeSuggestion(double longitude, double latitude) { + WeatherApi.getLifeSuggestionFromZhixin(longitude, latitude, new CommonHttpCallback() { + @Override + public void onSuccess(ZhixinLifeSuggestionResultBean result) { + ZhixinLifeSuggestionResultBean.ResultsEntity resultsEntity = result.getResults().get(0); + ZhixinSuggestionEntity suggestion = resultsEntity.getSuggestion(); + if (suggestion == null) { + return; + } + mView.initLifeSuggestionInfo(suggestion); + } + + @Override + public void onFail(int code, String message) { + mView.showToast(message); + } + }); + } } diff --git a/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_car_washing.png b/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_car_washing.png new file mode 100644 index 0000000000000000000000000000000000000000..1662ae007d721bca5d9c237fb000f729c1e4e8b8 GIT binary patch literal 2844 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 bbaZsR6iw-m|2Sp)YxM#%BWpq>-YfP$IUEVS literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_dressing.png b/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_dressing.png new file mode 100644 index 0000000000000000000000000000000000000000..d6667b46b05ca5ff5ed87743dd066db95e5f9fe9 GIT binary patch literal 5766 zcmYM2c|6qL_xSG&#!fY4-v=SGBwHBSW{9#UA=$~kW}SCRRK&}ktujdVozP4hjWuK6 zl|iyEWsR@T@1Nfv_uhZ*Ip=xLav$e$;%^%3Gc#~A005Y=7#-8o6ZgMGhdA9oYdCZP zaNY>3qh%gyw`xmY7inR8{6Vi@w$`-Y++U~5A8}D%QVMyq>*iU70Q5&*zfWAEJvy>X zU1xQT%+HB_jq`;IJvw7#XsD~e&X$5F-?3i~U(Oj>UkzDP56`b%kKE-yCe*Km`AmiP z@)K(NrU^d|&$dt`)#0rMyHQq))r`Q(@5~CEC?ikXNV4>$b4f>um{1QE4EV+L?PDTC8* zvG330x{zQpg<@TgZb+FgQv|4gf;b;|lMCmUcPS#IPP`d}9nYtP2mAl@7;0Ms%DhBB z(%q~1_&+cUr&#aT9()$us#Qt#H0W9_HCCb>c1DwRwgE*@_q~3_C#8-Sw+*|aDX|;~ z5i}Z(ESjQoVH<%!zmM}vM@q!}C~U3&;&cWjykod}V7F2fpln%j`NurHoWy6a6@7AS zt`^yiUUPhNr*XdRiPP06mUphjKDVtv>sg`@X*N>q0bh>67Vb6GMUuXz0Bn)eh0zFd z<16)@8Hb_C0#u;}@}WL%b^jssQah3(ESAuQVN5tp!?oJmV+XO}qBB-QYN-uDD}Ov` z0QLraLmXS&HrB#JdWQNZf$I<@aPTpT{^Q0Cq{wTq5NBr25og4%JX}vXdR>jIHruUa zKJ}G%LHa6pDJ^uhS%oVHHrq?mWffntxL1J*L*Qg4PBc(`e|n(zcAASRt!DQ7rF(~+ zRImEKjJ4xGd`U}=r?#{Gp6?i7)4Jii~m45n&Qs2xgYk`F# zaXg|l_a~5;8s~L=Xt`nZSX7;j7*A3>VIg+DF>iGZHJUTNGA`MSNnN>c8m`98!Fpt@ zdWhG=NtO!Vu`AHOvL4RkzCxQ+!E!^;UG0O`UD^GY%?)s@4U+*#6y9IipoDm7oWO|c zuu#3INOYEd=%>n4CdYmdR@G+$z}Ndyc1F`nYYy*5g1VGm)B`PcFmq|d!1=)mq=`S;D4 z7tm$8r+DkwNQR9CzdQ+ndCtEwWCgOM54U-?k(2&=k zyraFH`rIw+afY-3|GbUKWH&nn#DAK#h*L~N(TnK3qxHpx!ev!#WAz8&2r|+jJo^v# zutaEn)lF+Uu#l7Cr4cEDm9jlA2DLU{raR)lQAiE`O7DC*jIg(T85uj_)~1_r^(n>P zyi%F%79W5TeIkAj1pBDmmaZ}L8iOKq>P$KeeWg@DRqu@IaiMaQ!PYz9Ura=PWAc^6 z#~2HMsd?S*x^Q9oi+UEthJzfFcddh$Dr3qHdx_?|vt3@xChtJ62S}pSZpFgIz7bSa zLre_aj5|i?!CD`aCqDW%9o;*ChC-&@_tM(@)^xX0RFL&=J%^bAGhGxLF*@Wqsc5TY zI5Yu)4j2sZ)ni*8_R-l|uIE;*%L$@JQ^BRWOoyrk#5B!gY^TV6yfnCWbI+4dpLP1u?+<#r+EzYa6p zz2c5wLk=V>&gnp`Hd$Fd+@@zi2}wEl&m3yK>Fo!@15qGAJ$tjsGS9$2olCVvBIdL_ zSz)chgZ|cYkTd&&0f`OF!dB@_SHXk#HQdXHiW{ z7$-#=GrsIz#RMZFVXapO-Ik})&4{zZ7iZf`z$gw|B{y3fw<`&6MQ$?d7}0|s$)r3w7SRWvzE?}q zpgTV|ZowcVHJZEip0Hu~MOMfZ++yc?u#<<8&qE*-?`cpdALa$UsdDNofe9uJscV=i=EcFC%6sNFR=a0P9V?6k!geydSFv+NBuV41EO zaFNOv-ru$eA7&F<5(H6|T=V*;^8PiYQ!p?}EBqVdZ8gz&1IpEVGd-V-;)^%GC<8lbJ+y^}_%dBb@Uy3PUw6BHswGug{Ln^5X_dKJ&;D0WgRhmfbosSH1i z<67D{8#UzHbFMV;fh4z8zn~oqj`aOMw z8n!muJVorcO1pubj{FmC2OAy(OHk|5k$5!@PbigCxNvKj9{5o$SMSS`+|;<#?I6?W zj~_cg1xCClvb^YeuFxls>6w_-haxm*34veW(I8_kXwkJhmbErE04S)9Y`Q zZR0`@a&)CWxOR72sN=24grFpaQ{dMB>S=FC%?PS^L!3l=s3d&bgIG~l( zV@=h)pxpZ4Hv_G`I0&4Vc`t!oXMPutUx&r*1X}UjOOuA7-$mQ$6q|ZEs@+{?!PyJB zM}71VCKZL&me={`3T?tgfp3z2L?6>T-)TCG{|AB$M{y7>@vg;c*(S6@19}68J73Y( zoaTka)Ag(=Oz`7N%zDlEMKD_T?(xH6KG5KrDfRj##{b*XS4g$JAeT{Iff@yl%7U*U_#T(5fe*&yoVXz! zD679aX}DAH>z&h{wfWr4rQFm~$FLFKt)8c1b|E0tZRP4jS7^FgEOh_mg_CKF`F1m? za*>gYeAfZ*p5@H!lp_9Xk|GUuW~t3gR4ijM4%r}yv?!nbX0XQ$OjZx0pyP^{ful{1 zV`jHtditARV9AsL=!Q`_lYHMIoJgP2GdgDQ2h|C6_Z&XtihBtMd4~R$Cr<@X*xr{v zS0u`LwdLnse@iQIfWJrafzCs1|AqPQT!(?8j^!?`K{ba}8i=1}cIZd!NYZl$M{DPK zxL^Wp1PwOY$_P~`kD6XUJs$Yv`?qCNV>klU1+mI6Jv@ zIFlJc08H05c<9apzIBE0VO0@~lo<@ISfh_+c^Pls5K~v%3^rQC&T+G{=>EP&K)KF` zI_&lM!Q>pa&B4tc-B#@Y)o&UpjJUujQLK=J$;a6=Bl0qo18-3KGTTuCh*>xI)k9x> zN`OqS^sgshN810fOk)HD&o>i(^&wd{7f4*!ex4;c{E}Pql>~b{P%rwnu4+v#`=J{J zPBi(L$l_h-ajOY$2wk6Dq>8KaJf*W>b-)%qPjJ~^PA6|Kz=>nBJuJgdV-!oBzNJ#S z`Iq{?b!7iC)MN+BbKi!rs<^;9j6uvzZ_Af+f*jx^jkl{p4prIrocUGcFUQnpk?_`^ zItx8P2;zMF_Ch&UwP4IGIW^2g)$(+RkMy!WLh@=LpoQ7H#HDU5<5Dt$!QpiYpzV@x)KxnBRL}{}9JbEamm&X9eypJkTV`=eqp}eAnn=e^qjCxY2 zKns6InYBfUgDM?wRLc)S76Y)G#P@lMpEhWGGn%(mg&Uq(?5F@tK~S#{*Hp58kPew6 zg=uD3DKpIb6d}v3`@muq23;PdaFDfo<~eqqwbB004ME6lXulM(U8t(+S2&ZeVjd*Bc) zammF|Y(O0wHqRpp>8bsu0AfW)^1~Ho)Z#q6cP$mQJ^tn58y-6am6UWFtg*Erz?B5v z6JGj<$;+B}Vm*T8UVV2;wmrd%RB%ezgcl zVvQbOWZ^TYuJvXCran^~$#wg|rzKF}j(-_0Mk@IK*VhY}{#xd|810xc5q7U@iDCgO zVfQ&GmLB7EZA^NSL(EU&bFf`}&Hqog*_TYG(zKA%!nJLl8uPcMEu0=hiKtBZxzkTfK*3FrTjO`D|i8JFLGN^NNKw6vVo4Qz0MMke;D#}t+3f4|;Wd^SBKphQf9 zd^S(R`(S-dhs>{5fEQ`-G9%pN0=>?m&!Bc0I#4oSFxJ;rRCC3p*px!j7GP*!DD+Jt;I~OLzmH>q7b5g4MgX zKa(~VGowatdl=3MAd=PEH#1Tte?R?s<S!JR;_vFco{96S#Bch*Y!+kFHLyl(s#{6kQ#{4^~gjQ0JK# zF8`1ce)@|F{jy+~ee|t^Do3q_O}4AQc(Lqe$8^Q&$uNHd(wiaEx@Of)#Q`XfY_&4I zEo!fRe7Ptler|y?LBn$8v+C#8y{7h#PR*kPbW%kPs&FvyL$}J~RqMHgxw71? z^q=RM0ahcn*+*X#o8uxjltj6u)$&DGB@a)94KI9vZXL&)v|keE;<63z>V%=KB$Wb& z)Ld~H`OW0-S^Fhb_7OP|GfE0N@37|c*u15d5v$$jGvPfSsk)4Owo^jan0&)CykE9u zI!|UC1l`p;JJ70(&A7p6CqcgPywI(5qx4gd-khzERTymc9I6e8&Om%u{V((LmGbXh zxqTJ3iBH=~2E%INc7nazX(s%a@!7=JG*1r0lR<;vg z;@EMy>B5&gP{xRBLP=FyW7kyaXEk>>3m=-0~2MyIRF3v literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_flu.png b/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_flu.png new file mode 100644 index 0000000000000000000000000000000000000000..324f742dd5c7d12876e68219bc43bc06b24a6b93 GIT binary patch literal 3922 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_uv.png b/app/src/main/res/drawable-xxhdpi/icon_weather_suggestion_uv.png new file mode 100644 index 0000000000000000000000000000000000000000..4a79f4b6bf17c6c578f37c6eb204744b225e4efc GIT binary patch literal 4039 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/item_weather_suggestion.xml b/app/src/main/res/layout/item_weather_suggestion.xml new file mode 100644 index 0000000..d9c53bf --- /dev/null +++ b/app/src/main/res/layout/item_weather_suggestion.xml @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +