好吧,废话就少说了。开始觉着这个线程真的就不费事,后来,到现在。。。嘿嘿,要是牵涉到一些活跃的赋值以及得到东西,为了线程的安全,好像我们都离不开它哦!
今天,不是要做一个可以从网上动态获取数据的应用嘛,所以,这里在获取网络图片的时候,我遇到一个问题:
first:网络图片都是URl的,而我等待赋值的这些控件除了ImageView还有Button以及布局。。。。imageview以及button还好说咯可是布局呢?
也就是说这里必须要将Url转换成Drawable类型的。
而且是获得多张,于是,我是这样打算的:
先定义一个数组,然后将这些url全部写出来,然后将他转换成drawable类型的,然后再利用handler去更新界面。。。。不错不错。。。
其实网上有很多这样关于这两者的代码,可是就是木有获取一连串的字符(url)然后来进行转换的。所以,就记下来了,方便自己,也方便大家嘛。。。
public class MyThread extends Thread { String[] str = { WelcomeActivity.getstyleResponse.items.appStoreTheme.appStoreLogoImg, WelcomeActivity.getstyleResponse.items.appStoreTheme.appStoreBackImg, WelcomeActivity.getstyleResponse.items.appStoreTheme.appStoreListimg, WelcomeActivity.getstyleResponse.items.appStoreTheme.appStoreListfocusimg, WelcomeActivity.getstyleResponse.items.appStoreTheme.appListonfocusimg, WelcomeActivity.getstyleResponse.items.appStoreTheme.appListFloat, WelcomeActivity.getstyleResponse.items.appStoreTheme.appInfoFloat, WelcomeActivity.getstyleResponse.items.appStoreTheme.appBoxBorderColor, WelcomeActivity.getstyleResponse.items.appStoreTheme.appBoxBgColor, WelcomeActivity.getstyleResponse.items.appStoreTheme.appBorFocusColor, WelcomeActivity.getstyleResponse.items.appStoreTheme.appBiFocuscolor, WelcomeActivity.getstyleResponse.items.appStoreTheme.appLeft, WelcomeActivity.getstyleResponse.items.appStoreTheme.appRight }; @Override public void run() { for (int i = 0; i < str.length; i++) { try { URL url = new URL(str[i]); try { bitmap = BitmapFactory.decodeStream(url.openStream()); bd = new BitmapDrawable(bitmap); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } Message message = new Message(); message.obj = bd; System.out.println("this image message is====>" + bd); message.what = i; System.out.println("this image message what is====>" + i); mhand.sendMessage(message); } msgHandler.sendEmptyMessageDelayed(0, 1 * 1000); } } class mHandler extends Handler { public void handleMessage(Message msg) { switch (msg.what) { case 1: if (acache.getAsDrawable("1") == null) { layoutDraw = ((BitmapDrawable) msg.obj); // mlLayout.setBackground((BitmapDrawable) msg.obj); System.out .println("RRRRRRRRRRRthis layoutdraw is==========>" + layoutDraw); } else { layoutDraw = (BitmapDrawable) acache.getAsDrawable("1"); // mlLayout.setBackground(acache.getAsDrawable("1")); System.out .println("RRRRRRRRRRRthis layoutdraw is==========>" + layoutDraw); } break; case 2: isNomal = (BitmapDrawable) msg.obj; System.out.println("11111111111111 nomale is ====>" + isNomal); // MyArrayAdapter.getImg(bd, 2); break; case 3: isfouce = (BitmapDrawable) msg.obj; System.out.println("222222222222 fouce is ====>" + isfouce); // MyArrayAdapter.getImg(bd, 3); break; case 4: isSelected = (BitmapDrawable) msg.obj; System.out.println("3333333333333333 selected is ====>" + isSelected); // MyArrayAdapter.getImg(bd, 4); break; case 5: break; case 6: if (acache.getAsDrawable("6") == null) { DetailDraw = ((BitmapDrawable) msg.obj); // detail.setBackground((BitmapDrawable) msg.obj); // detailInfo.setBackground((BitmapDrawable) msg.obj); System.out .println("66666666666666666 is the detail is is ====>" + DetailDraw); } else { DetailDraw = (BitmapDrawable) acache.getAsDrawable("6"); // detail.setBackground((BitmapDrawable) acache // .getAsDrawable("6")); // detailInfo.setBackground((BitmapDrawable) acache // .getAsDrawable("6")); System.out.println("66666666666666666666 else is ====>" + DetailDraw); } break; // color of the image case 8: break; // color of the image case 10: break; case 11: DetailInfoFragment.getImg(bd, 11); break; case 12: DetailInfoFragment.getImg(bd, 12); break; } } };
这里面的代码 我是完全没做修改了!嘿嘿,看懂了就懂了,其实我这个循环可能会很累赘,大家有什么好的,提提咯!期待。。。
原文:http://www.cnblogs.com/Catherine-Brain/p/3724511.html