Android 下载显示网络图片 实现直接使用类似setimage的方法来完成

http://www.smzdwan.com/news/4642.html

最近玩Android时候发现图片下载并用imageview 显示是一个比较麻烦的事情,每次都要去handle 实现以下界面刷新部分,又要在别的地方实现异步的下载任务,要是能直接setimage(“http//:xxx.xxx.xxx”)这样设置就好了 于是就继承了Imageview 然后实现以下代码


public class myImageView extends ImageView {

    public Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            if(msg.what == 0){
                setImageBitmap((Bitmap)msg.obj);
            }
        }
        
    };
    public myImageView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public myImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public myImageView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }
    public void InitMyImageView(){
        
    }
    public void SetImageForHttp(final String UrlPath){    
        if(UrlPath ==null || UrlPath.length()<1)return;
        
        new Thread() {
            public void run() {        
                Bitmap btm =  getHttpBitmap(UrlPath);
                Message msg = new Message();
                msg.what = 0;
                msg.obj = btm;
                mHandler.sendMessage(msg);
            };
        }.start();

        
    }
    
    public  Bitmap getHttpBitmap(String url){  
        URL myFileURL;  
        Bitmap bitmap=null;  
        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();  
        }catch(Exception e){  
            e.printStackTrace();  
        }
          
        return bitmap;  
          
    }  
}

//当然请自己添加网络访问权限,以及一下安全性的判断我就不贴了

下面贴一下使用方法

public class MainActivity extends ActionBarActivity {
    public LinearLayout linearLayout ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        linearLayout  =   (LinearLayout) findViewById(R.id.self_linear_layoutssss);
        myImageView imgview = new myImageView(MainActivity.this);
        imgview.setLayoutParams( new LinearLayout.LayoutParams (100,100));
        linearLayout.addView(imgview);                
        imgview.SetImageForHttp("http://img.smzdwan.com/upload/201405/5371c95a66031.jpg");//简单轻松就能搞定了
    }
 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值