zoukankan      html  css  js  c++  java
  • Android网络图片异步加载

    部分源码如下:

    dialog= ProgressDialog.show(this,"","加载数据,请稍等 …",true,true);       
             //图片资源
            String url = "http://www.kzwlg.com.cn:1080/Wlg_server2/"+bundle.getString("pic");        
             //得到可用的图片
            getHttpBitmap(url);
    /**
         * 对图片进行大小缩放
         * @param bm
         * @param newWidth
         * @param newHeight
         * @return
         */
        protected Bitmap scaleImg(Bitmap bm, int newWidth, int newHeight) {
            // 图片源
            // Bitmap bm = BitmapFactory.decodeStream(getResources()
            // .openRawResource(id));
            // 获得图片的宽高
            int width = bm.getWidth();
            int height = bm.getHeight();
            // 设置想要的大小
            int newWidth1 = newWidth;
            int newHeight1 = newHeight;
            // 计算缩放比例
            float scaleWidth = ((float) newWidth1) / width;
            float scaleHeight = ((float) newHeight1) / height;
            // 取得想要缩放的matrix参数
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth, scaleHeight);
            // 得到新的图片
            Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix,
              true);
            return newbm;
           }
    /**
         * 处理ImageView
         */
        final Handler handler = new Handler() {
            @Override
            public void handleMessage(Message msg) {        
                 switch (msg.what) {
                case 1:
                     image.setImageBitmap(scaleImg(bitmap, 300, 300));    
                     dialog.dismiss();  
                    break;
                default:
                    break;
                }
                
            }
        };
        /**
         * 从网络位置得到图片
         * 采用handler+Thread模式实现多线程异步加载
         * @param url
         * @return
         */
        private void getHttpBitmap( final String url) {
            
            Thread thread=new Thread(){
                public void run() {
                    URL myFileURL;            
                    
                    try{        
                        myFileURL=new URL(url);
                        //获得连接
                        HttpURLConnection conn=(HttpURLConnection)myFileURL.openConnection();
                         //设置超时时间为6000毫秒,conn.setConnectionTiem(0);表示没有时间限制
                        conn.setConnectTimeout(6000);
                        //连接设置获得数据流
                        conn.setDoInput(true);
                        //不使用缓存
                        conn.setUseCaches(false);
                        //这句可有可无,没有影响
                        //conn.connect();
                        //得到数据流
                        InputStream is = conn.getInputStream();
                        //解析得到图片
                        bitmap = BitmapFactory.decodeStream(is);
                        //关闭数据流
                        is.close();
                        
                        Message message = handler.obtainMessage();
                        message.what=1;
                        handler.sendMessage(message);
                        }catch(Exception e){
                            e.printStackTrace();
                        }                
    
                };
            };
            thread.start();
            thread=null;
        }
  • 相关阅读:
    数论算法 剩余系相关 学习笔记 (基础回顾,(ex)CRT,(ex)lucas,(ex)BSGS,原根与指标入门,高次剩余,Miller_Rabin+Pollard_Rho)
    51Nod1123 X^A Mod B 数论 中国剩余定理 原根 BSGS
    BZOJ2219 数论之神 数论 中国剩余定理 原根 BSGS
    BZOJ3583 杰杰的女性朋友 矩阵
    BZOJ2821 作诗(Poetize) 主席树 bitset
    BZOJ2178 圆的面积并 计算几何 辛普森积分
    BZOJ1058 [ZJOI2007]报表统计 set
    BZOJ2480 Spoj3105 Mod 数论 扩展BSGS
    BZOJ1095 [ZJOI2007]Hide 捉迷藏 动态点分治 堆
    AtCoder Regular Contest 101 (ARC101) D
  • 原文地址:https://www.cnblogs.com/xuewater/p/2624058.html
Copyright © 2011-2022 走看看