
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();
}
}