zoukankan      html  css  js  c++  java
  • Android三种基本的加载网络图片方式(转)

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

    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     下载

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

  • 相关阅读:
    交叉编译环境软件搭建
    (C)struct结构体
    (C)字节对齐#pragma pack()
    常用bluetooth协议
    (C/C++)register关键字
    Android学习
    (C)*p++和*++p区别
    java文件末尾追加内容的两种方式
    java1.7集合源码阅读: Stack
    java1.7集合源码阅读: Vector
  • 原文地址:https://www.cnblogs.com/YangBinChina/p/4596961.html
Copyright © 2011-2022 走看看