https://github.com/mlxy/NCWeather
重写了WeatherImages类,虽然之前从来没用上过。
现在天气图标已经可以正常变化了。
也就是说。
GUI已经搞定了。
剩下的就是一些细节的修改。
再到1.0为止的两个版本就改一改内部代码就行了。
我发现我最近的博文已经开始不讲技术细节了……仿佛不是好现象。
图就不发了,反正看起来和之前发的图一样。
工程也不发了吧,反正变化不多。
总之就是这样。
1 /** 获取根据系统时间返回白天或夜晚的天气图片。*/ 2 public Bitmap getWeatherImage() { 3 // 获取当前小时,24小时制。 4 Calendar c = Calendar.getInstance(); 5 int hour = c.get(Calendar.HOUR_OF_DAY); 6 7 // 根据时间获取文件夹名称。根据时间获取天气,用天气获取对应图片的文件名。 8 String dayOrNight = null; 9 String fileName = null; 10 11 if (hour <= 6 || hour >= 18) { 12 dayOrNight = "night"; 13 String weatherPinyin = map.get(WeatherTag.NIGHT_WEATHER_PINYIN); 14 fileName = WeatherImages.getFileName(weatherPinyin); 15 } else { 16 dayOrNight = "day"; 17 String weatherPinyin = map.get(WeatherTag.DAY_WEATHER_PINYIN); 18 fileName = WeatherImages.getFileName(weatherPinyin); 19 } 20 21 // 获取资源包。 22 AssetManager manager = this.parent.getResources().getAssets(); 23 24 // 用已经得到的变量获取对应图片对象。 25 Bitmap image = null; 26 27 try { 28 InputStream in = manager.open("weather/" + dayOrNight+ "/" + fileName); 29 image = BitmapFactory.decodeStream(in); 30 in.close(); 31 } catch(IOException e) { 32 e.printStackTrace(); 33 } 34 35 return image; 36 }
1 package com.mlxy.property; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 7 public class WeatherImages { 8 private static Map<String, String> map = new HashMap<String, String>() { 9 private static final long serialVersionUID = -8552791002402932770L; 10 11 { 12 put("qing", "00.png"); 13 put("duoyun", "01.png"); 14 put("yin", "02.png"); 15 put("zhenyu", "03.png"); 16 put("leizhenyu", "04.png"); 17 put("leizhenyubanyoubingbao", "05.png"); 18 put("yujiaxue", "06.png"); 19 put("xiaoyu", "07.png"); 20 put("zhongyu", "08.png"); 21 put("dayu", "09.png"); 22 put("baoyu", "10.png"); 23 put("dabaoyu", "11.png"); 24 put("tedabaoyu", "12.png"); 25 put("zhenxue", "13.png"); 26 put("xiaoxue", "14.png"); 27 put("zhongxue", "15.png"); 28 put("daxue", "16.png"); 29 put("baoxue", "17.png"); 30 put("wu", "18.png"); 31 put("dongyu", "19.png"); 32 put("shachenbao", "20.png"); 33 put("xiaodaozhongyu", "21.png"); 34 put("zhongdaodayu", "22.png"); 35 put("dadaobaoyu", "23.png"); 36 put("baoyudaodabaoyu", "24.png"); 37 put("dabaoyudaotedabaoyu", "25.png"); 38 put("xiaodaozhongxue", "26.png"); 39 put("zhongdaodaxue", "27.png"); 40 put("dadaobaoxue", "28.png"); 41 put("fuchen", "29.png"); 42 put("yangsha", "30.png"); 43 put("qiangshachenbao", "31.png"); 44 put("mai", "53.png"); 45 put("unknown", "undefined.png"); 46 } 47 }; 48 49 /** 50 * 根据天气名称的拼音返回对应图片的文件名。 51 * 52 * @param weather 天气名的拼音。 53 * @return fileName 天气名称的拼音对应的文件名。如果找不到就返回unknown图片的文件名。*/ 54 public static String getFileName(String weather) { 55 String fileName = map.get(weather); 56 57 // 如果找不到就返回unknown图片的文件名。 58 if (fileName == null) { 59 fileName = map.get("unknown"); 60 } 61 62 return fileName; 63 } 64 }
MainActivity里的代码就很好懂了:
取得Bitmap类型的图片:
weatherImage = getter.getWeatherImage();
设置进去:
weatherImageView.setImageBitmap(weatherImage);
就完事啦 /w