先貼一下工具類的代碼!可直接複製粘貼 現在一個圓形圖片已經完成了90%,接下來就是佈局文件,在這裡我只寫了一個簡單的佈局 最後需要在Activity中載入!找到對應的佈局即可 紫色的標記是需要聲明圖片為自己定義的RoundImageView.java文件的位置 紅色標註的需要聲明對應的RoundIm ...
先貼一下工具類的代碼!可直接複製粘貼
public class RoundImageView extends ImageView { private Paint mPaint; //畫筆 private int mRadius; //圓形圖片的半徑 private float mScale; //圖片的縮放比例 public RoundImageView(Context context) { super(context); } public RoundImageView(Context context, AttributeSet attrs) { super(context, attrs); } public RoundImageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); //因為是圓形圖片,所以應該讓寬高保持一致 int size = Math.min(getMeasuredWidth(), getMeasuredHeight()); mRadius = size / 2; setMeasuredDimension(size, size); } @Override protected void onDraw(Canvas canvas) { mPaint = new Paint(); Bitmap bitmap = drawableToBitmap(getDrawable()); //初始化BitmapShader,傳入bitmap對象 BitmapShader bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); //計算縮放比例 mScale = (mRadius * 2.0f) / Math.min(bitmap.getHeight(), bitmap.getWidth()); Matrix matrix = new Matrix(); matrix.setScale(mScale, mScale); bitmapShader.setLocalMatrix(matrix); mPaint.setShader(bitmapShader); //畫圓形,指定好中心點坐標、半徑、畫筆 canvas.drawCircle(mRadius, mRadius, mRadius, mPaint); } //寫一個drawble轉BitMap的方法 private Bitmap drawableToBitmap(Drawable drawable) { if (drawable instanceof BitmapDrawable) { BitmapDrawable bd = (BitmapDrawable) drawable; return bd.getBitmap(); } int w = drawable.getIntrinsicWidth(); int h = drawable.getIntrinsicHeight(); Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, w, h); drawable.draw(canvas); return bitmap; } }
現在一個圓形圖片已經完成了90%,接下來就是佈局文件,在這裡我只寫了一個簡單的佈局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"> <com.bc.rcmpapp.util.RoundImageView android:id="@+id/round_img" android:scaleType="fitCenter" android:layout_width="30dp" android:layout_height="30dp"
android:src="@drawable/ic_launcher"/>
</LinearLayout>
最後需要在Activity中載入!找到對應的佈局即可
RoundImageView imageView = (RoundImageView)findViewById(R.id.round_img);
紫色的標記是需要聲明圖片為自己定義的RoundImageView.java文件的位置
紅色標註的需要聲明對應的RoundImageView
接下來圓形圖片就成功了!繼續對圖片進行操作吧