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:///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(.imageView001);​

​        ​​​​imageView002 = (ImageView)findViewById(.imageView002);​

​        ​​​​imageView003 = (ImageView)findViewById(.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:///apk/res/android"​

​    ​​​​xmlns:tools=​​​​"http:///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     ​​下载​​