zoukankan      html  css  js  c++  java
  • 初识Volley(三)

    NetworkImageView 分析:

    public class NetworkImageView extends ImageView
    继承自ImageView,添加了一个
    public void setImageUrl(String url, ImageLoader imageLoader) {}
    方法,参数包含一个Url地址和一个ImageLoader对象

    核心方法:
    private void loadImageIfNecessary(final boolean isInLayoutPass) {}
    内部实现,boolean 类型参数代表是否重新请求网络 ,true:重新请求 false:取缓存
    内部实现和ImageLoader类似,都是通过ImageContainer中new一个ImageListener,在ImageListener,只是做了Url的空判断,如果Url为null,则调用ImageContainer.cancelRequest();取消请求

    覆写方法:
     
    @Override
        protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
            super.onLayout(changed, left, top, right, bottom);
            //onLayout时重新请求
            loadImageIfNecessary(true);
        }
    @Override
        protected void onDetachedFromWindow() {
            //销毁View的时候Release操作
            if (mImageContainer != null) {
                // If the view was bound to an image request, cancel it and clear
                // out the image from the view.
                mImageContainer.cancelRequest();
                setImageBitmap(null);
                // also clear out the container so we can reload the image if necessary.
                mImageContainer = null;
            }
            super.onDetachedFromWindow();
        }

    //drawable状态改变重绘
     @Override
        protected void drawableStateChanged() {
            super.drawableStateChanged();
            invalidate();
        }

    总结:网络请求下载图片显示,可以使用此控件,比传统的ImageView多了网络处理, 也添加了2个方法,设置开始下载的默认图和下载出错后显示图

    /**
         * Sets the default image resource ID to be used for this view until the attempt to load it
         * completes.
         */
        public void setDefaultImageResId(int defaultImage) {
            mDefaultImageId = defaultImage;
        }
    
        /**
         * Sets the error image resource ID to be used for this view in the event that the image
         * requested fails to load.
         */
        public void setErrorImageResId(int errorImage) {
            mErrorImageId = errorImage;
        }

  • 相关阅读:
    MyBatis——调用存储过程
    企业信息化快速开发平台JeeSite
    JavaWeb网页聊天室(WebSocket即时通讯)
    Java用webSocket实现tomcat的日志实时输出到web页面
    Java用WebSocket + tail命令实现Web实时日志
    linux 跨IP拷贝命令 scp
    在map中根据value获取key
    mysql 常用函数
    Nexus中自定义私服,每个项目都用独立的工厂,仓库
    button 默认类型是submit
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3130002.html
Copyright © 2011-2022 走看看