SmartImageView使用

SmartImageView的使用

1,将下载好的SmartView源码拷贝到src下
2,在item_list.xml布局文件中使用SmartImageView(全类名)
3,在MyAdapter的findView方法中,也是使用smartImageView控件,获取,添加数据
4,给SmartImageView添加数据
    siv.setImageUrl(imageUrl);

为什么使用开源的SmartImageView?

因为ImageView在给控件添加图片数据的时候,只能通过drawable,或者BitMap来
不能通过图片地址(数据库中一般只存图片地址)

自定义控件SmartImageView

1,创建SmartImageView 继承 ImageView
2,添加setImageUrl(String path)方法
3,一定要将所有的构造方法重写(alt+shfit+s + c);
4,因为SmartImageView是View,属性主线程可以修改UI
  但是网络请求需要在子线程中实现(将bitmap发送到handler)
  使用Handler(在handler中设置setImageBitmap(bitmap))

注意事项

1,自定义控件,一定要重写所有的构造方法
2,控件可以修改UI,但是网络请求必须放在子线程中操作
3,在xml布局文件中,一定要使用全类名
4,布局文件中,想让图片填充满,使用android:scaleType="fitXY"

代码部分

public class SmartImageView extends ImageView{



    private static final int TIME_OUT = 2000;

    private Handler handler = new Handler(){
        public void handleMessage(Message msg) {
            Bitmap bm = (Bitmap)msg.obj;
            SmartImageView.this.setImageBitmap(bm);
        };
    };

    public SmartImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        // TODO Auto-generated constructor stub
    }






    public SmartImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }



    public SmartImageView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }



    public void setImageUrl(final String path){
        new Thread(){
            public void run(){
                //将图片路径封装成URL对象
                try {
                    URL url = new URL(path);
                    //通过url对象获取连接对象
                    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                    //设置连接属性
                    conn.setConnectTimeout(TIME_OUT);
                    conn.setReadTimeout(TIME_OUT);
                    conn.setRequestMethod("GET");
                    //获取连接的响应码
                    int code = conn.getResponseCode();
                    if(code==200){                              //如果连接正常

                        //获取字节输入流
                        InputStream is = conn.getInputStream();
                        //解码流获取bitmap
                        Bitmap bm = BitmapFactory.decodeStream(is);
                        //创建一个Message对象,,将消息传输过去
                        Message msg = Message.obtain();
                        msg.obj = bm;
                        handler.sendMessage(msg);
                    }

                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }.start();


    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值