天气界面
利用的是和风天气的API
首先,需要进行api的申请,登录和风官网,进入控制台,申请一个新的web应用(我申请的是web应用,也可以申请安卓应用,然后利用相应的包和方法进行调用)
然后利用网络接口,请求数据,具体数据可以通过查看开发者文档来完成
在安卓应用中,利用okhttp进行网络请求,来请求天气数据
private void gettody(){
try {
manager.asyncJsonObjectByUrl("https://devapi.qweather.com/v7/weather/now?key=你的key&location="+longitude+","+latitude, new OkManager.Fun4() {
@Override
public void onResponse(JSONObject jsonObject) {
System.out.println(jsonObject.toString());
try {
if(jsonObject.getInt("code")==200){
Gson gson = new Gson();
String s=jsonObject.getJSONObject("now").toString();
NowResponse.NowBean now=gson.fromJson(s,new TypeToken<NowResponse.NowBean>() {}.getType());
tv_temperature.setText(now.getTemp());
tv_info.setText(now.getText());
// tv_air_info.setText(now.getWindDir());
tvWeek.setText(DateUtils.getWeekOfDate(new Date()));//星期
String time = DateUtils.updateTime(now.getObsTime());//截去前面的字符,保留后面所有的字符,就剩下 22:00
tv_old_time.setText("最近更新时间:" + WeatherUtil.showTimeInfo(time) + time);
tvWindDirection.setText("风向 " + now.getWindDir());//风向
tvWindPower.setText("风力 " + now.getWindScale() + "级");//风力
wwBig.startRotate();//大风车开始转动
wwSmall.startRotate();//小风车开始转动
}
} catch (JSONException e) {
e.printStackTrace();
}
}
});
}catch (Exception e) {
e.printStackTrace();
}
}
NowResponse实体类用来接收数据
package com.example.mymap.Dao;
import java.util.List;
public class NowResponse {
private String code;
private String updateTime;
private String fxLink;
private NowBean now;
private ReferBean refer;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getUpdateTime() {
return updateTime;
}
public void setUpdateTime(String updateTime) {
this.updateTime = updateTime;
}
public String getFxLink() {
return fxLink;
}
public void setFxLink(String fxLink) {
this.fxLink = fxLink;
}
public NowBean getNow() {
return now;
}
public void setNow(NowBean now) {
this.now = now;
}
public ReferBean getRefer() {
return refer;
}
public void setRefer(ReferBean refer) {
this.refer = refer;
}
public static class NowBean {
/**
* obsTime : 2020-07-15T07:35+08:00
* temp : 27
* feelsLike : 29
* icon : 100
* text : 晴
* wind360 : 209
* windDir : 西南风
* windScale : 1
* windSpeed : 4
* humidity : 67
* precip : 0.0
* pressure : 1001
* vis : 11
* cloud : 0
* dew : 20
*/
private String obsTime;
private String temp;
private String feelsLike;
private String icon;
private String text;
private String wind360;
private String windDir;
private String windScale;
private String windSpeed;
private String humidity;
private String precip;
private String pressure;
private String vis;
private String cloud;
private String dew;
public String getObsTime() {
return obsTime;
}
public void setObsTime(String obsTime) {
this.obsTime = obsTime;
}
public String getTemp() {
return temp;
}
public void setTemp(String temp) {
this.temp = temp;
}
public String getFeelsLike() {
return feelsLike;
}
public void setFeelsLike(String feelsLike) {
this.feelsLike = feelsLike;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getWind360() {
return wind360;
}
public void setWind360(String wind360) {
this.wind360 = wind360;
}
public String getWindDir() {
return windDir;
}
public void setWindDir(String windDir) {
this.windDir = windDir;
}
public String getWindScale() {
return windScale;
}
public void setWindScale(String windScale) {
this.windScale = windScale;
}
public String getWindSpeed() {
return windSpeed;
}
public void setWindSpeed(String windSpeed) {
this.windSpeed = windSpeed;
}
public String getHumidity() {
return humidity;
}
public void setHumidity(String humidity) {
this.humidity = humidity;
}
public String getPrecip() {
return precip;
}
public void setPrecip(String precip) {
this.precip = precip;
}
public String getPressure() {
return pressure;
}
public void setPressure(String pressure) {
this.pressure = pressure;
}
public String getVis() {
return vis;
}
public void setVis(String vis) {
this.vis = vis;
}
public String getCloud() {
return cloud;
}
public void setCloud(String cloud) {
this.cloud = cloud;
}
public String getDew() {
return dew;
}
public void setDew(String dew) {
this.dew = dew;
}
}
public static class ReferBean {
private List<String> sources;
private List<String> license;
public List<String> getSources() {
return sources;
}
public void setSources(List<String> sources) {
this.sources = sources;
}
public List<String> getLicense() {
return license;
}
public void setLicense(List<String> license) {
this.license = license;
}
}
}
切换城市功能:
在右上角加号点击后出来一个弹窗,可以提供省市区、县的数据
效果展示: