GUI搞定

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     }
DataGetter里新加的方法
 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 }
重写的WeatherImages类

MainActivity里的代码就很好懂了:

取得Bitmap类型的图片:

weatherImage = getter.getWeatherImage();

设置进去:

weatherImageView.setImageBitmap(weatherImage);

 

就完事啦 /w\

 

posted @ 2014-04-02 16:13  Chihane  阅读(154)  评论(0编辑  收藏  举报