你的位置:首页 > 软件开发 > 操作系统 > 自定义控件之圆头像

自定义控件之圆头像

发布时间:2015-11-24 15:00:03
先上代码:package com.andy.oschina_android.widget;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapSha ...

自定义控件之圆头像

先上代码:

package com.andy.oschina_android.widget;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapShader;import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.RectF;import android.graphics.Shader;import android.util.AttributeSet;import android.view.View;public class CircleImageView extends View {  private Paint mPaint;  private RectF mBound;  private Bitmap mImageBitmap;  private float mRadius;  public CircleImageView(Context context) {    this(context,null);  }  public CircleImageView(Context context, AttributeSet attrs) {    this(context, attrs, 0);  }  public CircleImageView(Context context, AttributeSet attrs, int defStyleAttr) {    super(context, attrs, defStyleAttr);    init();  }  private void init() {    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);    mBound = new RectF();  }  @Override  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {    int vw,vh;    vw = vh =0;    int iw,ih;    if(mImageBitmap==null){      iw = ih = 0;    }else{      iw = mImageBitmap.getWidth();      ih = mImageBitmap.getHeight();    }    int size = Math.min(iw,ih);    setMeasuredDimension(size,size);  }  @Override  protected void onSizeChanged(int w, int h, int oldw, int oldh) {    if(w!=oldw||h!=oldh){      /**       * 设置边界,剧中显示       */      int iw,ih;      if(mImageBitmap==null){        iw = ih = 0;      }else{        iw = mImageBitmap.getWidth();        ih = mImageBitmap.getHeight();      }      int size = Math.min(getHeight(),getWidth());      mBound.set(0,0,size,size);      mRadius = size/2;      if(mPaint.getShader()!=null){        Matrix m = new Matrix();        if(iw>ih){          m.setTranslate((iw-ih)/2,0);        }else{          m.setTranslate(0,(ih-iw)/-2);        }        mPaint.getShader().setLocalMatrix(m);      }    }  }  @Override  protected void onDraw(Canvas canvas) {    if(mImageBitmap!=null) {      canvas.drawRoundRect(mBound, mRadius, mRadius, mPaint);    }  }  /**   * 由图片决定View的大小   * @param bitmap   */  public void setImageBitmap(Bitmap bitmap){    if(bitmap!=mImageBitmap){      mImageBitmap = bitmap;      if(bitmap!=null) {        BitmapShader bs = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);        mPaint.setShader(bs);      }else{        mPaint.setShader(null);      }      requestLayout();    }  }}

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:自定义控件之圆头像

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录