首页 > 代码库 > ImageView学习

ImageView学习

技术分享

 

package liu.roundimagedemo.view;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.drawable.Drawable;import android.os.Handler;import android.os.Message;import android.support.v4.graphics.drawable.RoundedBitmapDrawable;import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;import android.util.AttributeSet;import android.widget.ImageView;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;/** * Created by 刘楠 on 2016/8/31 0031.22:14 */public class NetImageView extends ImageView {    Bitmap mBitmap;    /**     * 是否为圆形     */    private boolean isRound = false;    public void setRound(boolean round) {        isRound = round;    }    Handler mHandler = new Handler(){        @Override        public void handleMessage(Message msg) {            //super.handleMessage(msg);           if(!isRound){               setImageBitmap(mBitmap);               return;           }            Drawable drawable =createRoundBitmap(mBitmap);            setImageDrawable(drawable);        }    };    /**     * 建立圆形图片     * @param src     * @return     */    private Drawable createRoundBitmap(Bitmap src) {        Bitmap dst;        if(src.getWidth()>src.getHeight()){            dst = Bitmap.createBitmap(src,src.getWidth()/2-src.getHeight()/2,0,src.getHeight(),src.getHeight());        }else {            dst = Bitmap.createBitmap(src,0,src.getHeight()/2-src.getWidth()/2,src.getWidth(),src.getWidth());        }        RoundedBitmapDrawable roundedBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(),dst);        roundedBitmapDrawable.setAntiAlias(true);        roundedBitmapDrawable.setCornerRadius(dst.getWidth()/2);        return roundedBitmapDrawable;    }    public NetImageView(Context context) {        super(context);    }    public NetImageView(Context context, AttributeSet attrs) {        super(context, attrs);    }    /**     * 设置本地文件的图片     * @param url     */    public void setLocalImage(String url){        FileInputStream fis =null;        try {            fis  = new FileInputStream(url);            mBitmap = BitmapFactory.decodeStream(fis);            mHandler.sendEmptyMessage(0x1324);            //setImageBitmap(decodeStream);        } catch (FileNotFoundException e) {            e.printStackTrace();        }finally {            if(fis!=null){                try {                    fis.close();                } catch (IOException e) {                    e.printStackTrace();                }            }        }    }    /**     * 设置资源文件     * @param resId     */    public void setResourceImage(int resId){       mBitmap = BitmapFactory.decodeResource(getResources(), resId);        mHandler.sendEmptyMessage(0x133);       // setImageBitmap(bitmap);    }    public void setUrlImage(final String url){       new Thread(){           @Override           public void run() {               try {                   URL uri = new URL(url);                   HttpURLConnection conn = (HttpURLConnection) uri.openConnection();                  // conn.setConnectTimeout(100);                  // conn.setDoInput(true);                  // conn.setReadTimeout(100);                   int responseCode = conn.getResponseCode();                   if(responseCode==200){                       InputStream is = conn.getInputStream();                       mBitmap = BitmapFactory.decodeStream(is);                       mHandler.sendEmptyMessage(0x343);                       is.close();                   }               } catch (MalformedURLException e) {                   e.printStackTrace();               } catch (IOException e) {                   e.printStackTrace();               }finally {               }           }       }.start();    }}

 

ImageView学习