效果图(一)
效果图(二)
核心代码
Function_Weather.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import com.google.gson.Gson;
import android.util.Log;
public class Function_Weather
{
/**
* 获取天气城市
*
* @param pid
* 二级 -1为获取全部
* @param cid
* 三级 -1为获取二级全部
* @return
*/
public static ArrayList<WeatherGetAreaModel> GetCity(int pid, int cid)
{
ArrayList<WeatherGetAreaModel> list = new ArrayList<WeatherGetAreaModel>();
Gson gson = new Gson();
String par = "";
String pidString = "";
String cidString = "";
if (pid < 10)
{
pidString = "0" + pid;
}
if (cid < 10)
{
cidString = "0" + cid;
}
if (pid > 0)
{
par += "?pid=" + pidString;
if (cid > 0)
{
par += "&cid=" + cidString;
}
}
try
{
URL url = new URL("http://www.hao123.com/api/citymenu" + par);
Log.i("WebService", "天气城市:" + url);
InputStreamReader reader = new InputStreamReader(url.openStream());
BufferedReader br = new BufferedReader(reader);
String s = br.readLine();
String listString = s.substring(1, s.length() - 1);
String[] sarray = listString.split("\\{");
for (int i = 1; i < sarray.length; i++)
{
String fullValue = sarray[i];
String thisValue = null;
if (fullValue.substring(fullValue.length() - 1, fullValue.length()).equals("}"))
{
thisValue = "{" + fullValue;
} else
{
thisValue = "{" + fullValue.substring(0, fullValue.length() - 1);
}
WeatherGetAreaModel model = new WeatherGetAreaModel();
model = gson.fromJson(thisValue, WeatherGetAreaModel.class);
if (pid == 0)
{
if (!model.id().equals("35"))// 去除国外选项
{
Log.i("WebService", "天气城市:" + model.name());
list.add(model);
}
} else
{
Log.i("WebService", "天气城市:" + model.name());
list.add(model);
}
}
br.close();
reader.close();
} catch (IOException e)
{
list = null;
Log.e("WebService", "获取天气城市出错:" + e.toString());
}
return list;
}
/**
* 获取城市天气详情
*
* @param cityid
*/
public static WeatherCityinfo_Model GetCityInfo(String cityid)
{
Gson gson = new Gson();
try
{
URL url = new URL("http://www.weather.com.cn/data/cityinfo/" + cityid + ".html");
Log.i("WebService", "城市天气详情:" + url);
InputStreamReader reader = new InputStreamReader(url.openStream());
BufferedReader br = new BufferedReader(reader);
String s = br.readLine();
String sub = s.substring(15, s.length() - 1);
WeatherCityinfo_Model model = new WeatherCityinfo_Model();
model = gson.fromJson(sub, WeatherCityinfo_Model.class);
Log.i("WebService", "获取城市天气详情:" + model.city() + ":" + model.weather());
br.close();
reader.close();
return model;
} catch (IOException e)
{
Log.e("WebService", "获取城市天气详情:" + e.toString());
return null;
}
}
/**
* 获取城市天气实况
*
* @param cityid
*/
public static WeatherSk_Model GetCitySk(String cityid)
{
Gson gson = new Gson();
try
{
URL url = new URL("http://www.weather.com.cn/data/sk/" + cityid + ".html");
Log.i("WebService", "城市天气实况:" + url);
InputStreamReader reader = new InputStreamReader(url.openStream());
BufferedReader br = new BufferedReader(reader);
String s = br.readLine();
String sub = s.substring(15, s.length() - 1);
WeatherSk_Model model = new WeatherSk_Model();
model = gson.fromJson(sub, WeatherSk_Model.class);
Log.i("WebService", "获取城市天气实况:" + model.city());
br.close();
reader.close();
return model;
} catch (IOException e)
{
Log.e("WebService", "获取城市天气实况:" + e.toString());
return null;
}
}
}
Main.java
/**
* 获取城市天气详情
*/
private void GetWeather()
{
startweather_loading();
weatherThread = new Thread(getWeatherRunnable);
weatherThread.start();
}
private Runnable getWeatherRunnable = new Runnable()
{
@Override
public void run()
{
GetNowWeatherArea(selcityid);
getWeatherHandler.sendEmptyMessage(3);
weather_info = Function_Weather.GetCityInfo(selcityid);
weather_sk = Function_Weather.GetCitySk(selcityid);
if (weather_info != null && weather_sk != null)
{
getWeatherHandler.sendEmptyMessage(0);
} else
{
getWeatherHandler.sendEmptyMessage(1);
}
}
};
private Handler getWeatherHandler = new Handler()
{
public void handleMessage(Message msg)
{
switch (msg.what)
{
case 0:
cityname.setText(weather_info.city());
String temp = weather_info.temp1().replace("℃", "") + "~" + weather_info.temp2();
weather_temp.setText(temp);
String info1 = weather_info.weather();
weather_info1.setText(info1);
String info2 = weather_sk.WD() + weather_sk.WS() + " 湿度" + weather_sk.SD();
weather_info2.setText(info2);
Drawable drawable = null;
String img = weather_info.img1();
if (img.equals("d0.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_0);
} else if (img.equals("d1.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_1);
} else if (img.equals("d2.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_2);
} else if (img.equals("d3.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_3);
} else if (img.equals("d4.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_4);
} else if (img.equals("d5.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_5);
} else if (img.equals("d6.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_6);
} else if (img.equals("d7.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_7);
} else if (img.equals("d8.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_8);
} else if (img.equals("d9.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_9);
} else if (img.equals("d10.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_10);
} else if (img.equals("d11.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_11);
} else if (img.equals("d12.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_12);
} else if (img.equals("d13.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_13);
} else if (img.equals("d14.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_14);
} else if (img.equals("d15.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_15);
} else if (img.equals("d16.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_16);
} else if (img.equals("d17.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_17);
} else if (img.equals("d18.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_18);
} else if (img.equals("d19.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_19);
} else if (img.equals("d20.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_20);
} else if (img.equals("d21.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_21);
} else if (img.equals("d22.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_22);
} else if (img.equals("d23.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_23);
} else if (img.equals("d24.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_24);
} else if (img.equals("d25.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_25);
} else if (img.equals("d26.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_26);
} else if (img.equals("d27.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_27);
} else if (img.equals("d28.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_28);
} else if (img.equals("d29.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_29);
} else if (img.equals("d30.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_30);
} else if (img.equals("d31.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_31);
} else if (img.equals("d53.gif"))
{
drawable = getResources().getDrawable(R.drawable.weather_type_53);
}
if (drawable != null)
{
weather_img1.setBackgroundDrawable(drawable);
}
stopweather_loading();
break;
case 1:
stopweather_loading();
weather_error.setVisibility(View.VISIBLE);
break;
case 3:
cityname.setText(nowWeatherAreaModel.areaname3());
break;
}
}
};
本例中使用到了 自定义弹窗(三) 里面城市联动选择功能
详细代码 本例源码
1万+

被折叠的 条评论
为什么被折叠?



