提前声明
加载网络资源需要网络访问权限:
<uses-permission android:name="android.permission.INTERNET" />
加载sd卡中的资源则需要权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
不然, 不然 , 代码正确,但一直会抛异常哟 因为没权限呀 没权限
效果图:
一:
先说访问res/drawable/下的图片的访问方法中,因为这种最简单,getResources()是Context的方法。
myPic.setImageDrawable(getResources().getDrawable(R.drawable.ic_launcher));
访问本地SD卡中的图片
String path=Environment.getExternalStorageDirectory().toString()+"/aa.jpg";
Bitmap bitmap = getLoacalBitmap(path); //从本地取图片
三:
访问网络上的图片资源
这种情况下,要注意一下,android不允许在 在跟界面操作所在的线程中加入会导致程序反应迟钝的操作,譬如上网加载网上的数据,这些操作,要实现就一定得放到其他线程中去执行。这里,为了简便起见,咱们就直接用网上的async-http开源框架好了,内部实现原理就是开线程专门加载资源,加载完再反馈界面主线程。
操作起来还算简单,记得下载android-async-http-1.4.6.jar包,我用的1.4.6 后面的版本会出点问题。
String url="http://img.club.pchome.net/upload/club/other/2015/6/24/pics_kdsxxoo_1435102809.jpg";
AsyncHttpClient client=new AsyncHttpClient();
client.get(url, new AsyncHttpResponseHandler(){
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if(statusCode==200){
BitmapFactory factory=new BitmapFactory();