Android三种基本的加载网络图片方式

转自:http://www.oschina.net/code/snippet_1470644_36944

Android三种基本的加载网络图片方式,包括普通加载网络方式、用ImageLoader加载图片、用Volley加载图片。
标签: <无>

代码片段(6)[全屏查看所有代码]

1. [代码]普通加载网络方式     

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 public class NormalLoadPictrue {            private String uri;      private ImageView imageView;      private byte [] picByte;                  public void getPicture(String uri,ImageView imageView){          this .uri = uri;          this .imageView = imageView;          new Thread(runnable).start();      }            @SuppressLint ( "HandlerLeak" )      Handler handle = new Handler(){          @Override          public void handleMessage(Message msg) {              super .handleMessage(msg);              if (msg.what == 1 ) {                  if (picByte != null ) {                      Bitmap bitmap = BitmapFactory.decodeByteArray(picByte, 0 , picByte.length);                      imageView.setImageBitmap(bitmap);                  }              }          }      };        Runnable runnable = new Runnable() {          @Override          public void run() {              try {                  URL url = new URL(uri);                  HttpURLConnection conn = (HttpURLConnection)url.openConnection();                  conn.setRequestMethod( "GET" );                  conn.setReadTimeout( 10000 );                                    if (conn.getResponseCode() == 200 ) {                      InputStream fis =  conn.getInputStream();                      ByteArrayOutputStream bos = new ByteArrayOutputStream();                      byte [] bytes = new byte [ 1024 ];                      int length = - 1 ;                      while ((length = fis.read(bytes)) != - 1 ) {                          bos.write(bytes, 0 , length);                      }                      picByte = bos.toByteArray();                      bos.close();                      fis.close();                                            Message message = new Message();                      message.what = 1 ;                      handle.sendMessage(message);                  }                                                  } catch (IOException e) {                  e.printStackTrace();              }          }      };       }

2. [代码]用ImageLoader加载图片     

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 public class ImageLoaderPicture {            private DisplayImageOptions options;        public ImageLoaderPicture(Context context) {                    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context).threadPriority(Thread.NORM_PRIORITY - 2 )          .denyCacheImageMultipleSizesInMemory()          .discCacheFileNameGenerator( new Md5FileNameGenerator())          .tasksProcessingOrder(QueueProcessingType.LIFO).enableLogging()          .memoryCache( new WeakMemoryCache())                                          .build();          ImageLoader.getInstance().init(config);                    options = new DisplayImageOptions.Builder()          .showStubImage( 0 )          .showImageForEmptyUri( 0 )          .showImageOnFail( 0 )          .cacheInMemory().cacheOnDisc()          .imageScaleType(ImageScaleType.IN_SAMPLE_INT)          .bitmapConfig(android.graphics.Bitmap.Config.RGB_565)          .build();      }        public DisplayImageOptions getOptions() {          return options;      }        public void setOptions(DisplayImageOptions options) {          this .options = options;      }             }

3. [代码]用Volley加载图片     

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 public class VolleyLoadPicture {            private ImageLoader mImageLoader = null ;      private BitmapCache mBitmapCache;            private ImageListener one_listener;            public VolleyLoadPicture(Context context,ImageView imageView){          one_listener = ImageLoader.getImageListener(imageView, 0 , 0 );                    RequestQueue mRequestQueue = Volley.newRequestQueue(context);          mBitmapCache = new BitmapCache();          mImageLoader = new ImageLoader(mRequestQueue, mBitmapCache);      }        public ImageLoader getmImageLoader() {          return mImageLoader;      }        public void setmImageLoader(ImageLoader mImageLoader) {          this .mImageLoader = mImageLoader;      }        public ImageListener getOne_listener() {          return one_listener;      }        public void setOne_listener(ImageListener one_listener) {          this .one_listener = one_listener;      }            class BitmapCache implements ImageCache {          private LruCache<String, Bitmap> mCache;          private int sizeValue;                    public BitmapCache() {              int maxSize = 10 * 1024 * 1024 ;              mCache = new LruCache<String, Bitmap>(maxSize) {                  @Override                  protected int sizeOf(String key, Bitmap value) {                      sizeValue = value.getRowBytes() * value.getHeight();                      return sizeValue;                  }                                };          }            @Override          public Bitmap getBitmap(String url) {              return mCache.get(url);          }            @Override          public void putBitmap(String url, Bitmap bitmap) {              mCache.put(url, bitmap);          }      }         }

4. [代码]Activity     

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 public class MainActivity extends Activity {            private ImageView imageView001,imageView002,imageView003;            public static final String picUrl = "http://img.quwenjiemi.com/2014/0701/thumb_420_234_20140701112917406.jpg" ;      //public static final String picUrl = "http://192.168.1.181:8081/AndroidSerivces/house.jpg";            @Override      protected void onCreate(Bundle savedInstanceState) {          super .onCreate(savedInstanceState);          setContentView(R.layout.activity_main);          imageView001 = (ImageView)findViewById(R.id.imageView001);          imageView002 = (ImageView)findViewById(R.id.imageView002);          imageView003 = (ImageView)findViewById(R.id.imageView003);                    //用普通方法加载图片          new NormalLoadPictrue().getPicture(picUrl,imageView001);                    //用ImageLoader加载图片          ImageLoader.getInstance().displayImage(picUrl, imageView002, new ImageLoaderPicture( this ).getOptions(), new SimpleImageLoadingListener());                    //用Volley加载图片          VolleyLoadPicture vlp = new VolleyLoadPicture( this , imageView003);          vlp.getmImageLoader().get(picUrl, vlp.getOne_listener());      }         }

5. [代码]布局文件     

?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 <ScrollView xmlns:android= "http://schemas.android.com/apk/res/android"      xmlns:tools= "http://schemas.android.com/tools"      android:layout_width= "match_parent"      android:layout_height= "match_parent"      tools:context= ".MainActivity" >        <RelativeLayout          android:layout_width= "match_parent"          android:layout_height= "match_parent"          android:padding= "10dp" >            <TextView          android:id= "@+id/textView001"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"          android:text= "1.用普通方法的加载图片" />            <ImageView          android:id= "@+id/imageView001"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"          android:layout_below= "@+id/textView001" />                  <TextView          android:id= "@+id/textView002"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"          android:layout_below= "@+id/imageView001"           android:text= "2.用Android-Universal-Image-Loader加载图片" />            <ImageView          android:id= "@+id/imageView002"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"           android:layout_below= "@+id/textView002" />                  <TextView          android:id= "@+id/textView003"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"          android:layout_below= "@+id/imageView002"           android:text= "3.用Volley加载图片" />            <ImageView          android:id= "@+id/imageView003"          android:layout_width= "wrap_content"          android:layout_height= "wrap_content"           android:layout_below= "@+id/textView003" />            </RelativeLayout>   </ScrollView>

6. [文件] 三种基本网络加载图片方式.rar ~ 2MB     下载(873)

    原文作者:Dijkstra算法
    原文地址: https://blog.csdn.net/bsmmaoshenbo/article/details/52010134
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞