1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Android 图片圆角 自定义圆角的弧度 或者直接设置为圆形图片

Android 图片圆角 自定义圆角的弧度 或者直接设置为圆形图片

时间:2020-07-06 21:19:25

相关推荐

Android 图片圆角 自定义圆角的弧度 或者直接设置为圆形图片

1,创建RoundImageView继承自ImageView或者继承AppCompatImageView

import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.RectF;import android.util.AttributeSet;import android.support.v7.widget.AppCompatImageView;import com.xhs.sc.R;/*** 圆角ImageView*AppCompatImageView* @author xhs -7*/public class RoundImageView extends AppCompatImageView {private final RectF roundRect = new RectF();private float rect_adius = 100;private final Paint maskPaint = new Paint();private final Paint zonePaint = new Paint();public RoundImageView(Context context, AttributeSet attrs) {super(context, attrs);TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundImageView);//根据属性名称获取对应的值,属性名称的格式为类名_属性名rect_adius = typedArray.getFloat(R.styleable.RoundImageView_rect_adius, 100f);init();}public RoundImageView(Context context) {super(context);init();}private void init() {maskPaint.setAntiAlias(true);maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));//zonePaint.setAntiAlias(true);zonePaint.setColor(Color.WHITE);//float density = getResources().getDisplayMetrics().density;rect_adius = rect_adius * density;}public void setRectAdius(float adius) {rect_adius = adius;invalidate();}@Overrideprotected void onLayout(boolean changed, int left, int top, int right,int bottom) {super.onLayout(changed, left, top, right, bottom);int w = getWidth();int h = getHeight();roundRect.set(0, 0, w, h);}@Overridepublic void draw(Canvas canvas) {canvas.saveLayer(roundRect, zonePaint, Canvas.ALL_SAVE_FLAG);canvas.drawRoundRect(roundRect, rect_adius, rect_adius, zonePaint);//canvas.saveLayer(roundRect, maskPaint, Canvas.ALL_SAVE_FLAG);super.draw(canvas);canvas.restore();}}2,自定义View的属性,在values下styles.xml中添加<declare-styleable name="RoundImageView"><attr name="rect_adius" format="float" /></declare-styleable>

3,在布局文件中使用<com.xhs.sc.views.RoundImageViewandroid:id="@+id/item_img"android:layout_width="wrap_content"android:layout_height="wrap_content"android:scaleType="centerCrop"android:src="@mipmap/everyday_sign_item0"custom:rect_adius="5" /><!--这里rect_adius就是图片的圆角弧度,100或者更高就是圆形了-->4,使用时候 ImageView img = (ImageView)findViewById(R.id.item_img);直接转化为ImageView就行,因为本来就是继承自ImageView的;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。