你的位置:首页 > 操作系统

[操作系统]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();  }}