Android 使用
注意这样子的PNG加载方法当中,不要把文件放在anyDPI当中
package com.lenovo.frank.utils;import android.annotation.SuppressLint;
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.Shader;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.widget.ImageView;public class CircleImageView extends ImageView {//画笔private Paint mPaint;//圆形图片的半径private int mRadius;//图片的宿放比例private float mScale;public CircleImageView(Context context) {super(context);}public CircleImageView(Context context, @Nullable AttributeSet attrs) {super(context, attrs);}public CircleImageView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {super.onMeasure(widthMeasureSpec, heightMeasureSpec);//由于是圆形,宽高应保持一致int size = Math.min(getMeasuredWidth(), getMeasuredHeight());mRadius = size / 2;//这一步应该没有错setMeasuredDimension(size, size);}@SuppressLint("DrawAllocation")@Overrideprotected void onDraw(Canvas canvas) {mPaint = new Paint();Drawable drawable = getDrawable();if (null != drawable) {Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();//初始化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);} else {super.onDraw(canvas);}}}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
