Android 如何在圆形图像视图周围绘制边框?

Android 如何在圆形图像视图周围绘制边框?,android,Android,我需要使用此类在ImageView周围绘制一个红色边框: import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; import android.util.AttributeSet;

我需要使用此类在
ImageView
周围绘制一个红色边框:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundedImageView extends ImageView {

public RoundedImageView(Context context) {
    super(context);
}

public RoundedImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

protected void onDraw(Canvas canvas) {
    float radius = 45.0f;
    Paint bp= new Paint();
    bp.setAntiAlias(true);
    canvas.drawARGB(0, 0, 0, 0);
    bp.setColor(Color.RED);
    bp.setStrokeWidth(16);


    Path clipPath = new Path();
    RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
    clipPath.addRoundRect(rect, radius, radius, Path.Direction.CW);
    canvas.drawRoundRect(rect, radius, radius, bp);
    canvas.clipPath(clipPath);

    super.onDraw(canvas);
}
}
但它似乎没有划定边界?我不知道我做错了什么

有人能帮忙吗


谢谢

好的,这就是我最后要做的:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.ImageView;

public class RoundedImageView extends ImageView {

private static final int PADDING = 8;
private static final float STROKE_WIDTH = 16f;

private Paint mBorderPaint;

public RoundedImageView(Context context) {
    this(context, null);
}

public RoundedImageView(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
    setPadding(PADDING, PADDING, PADDING, PADDING);
}

public RoundedImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initBorderPaint();
}

private void initBorderPaint() {
    mBorderPaint = new Paint();
    mBorderPaint.setAntiAlias(true);
    mBorderPaint.setStyle(Paint.Style.STROKE);
    mBorderPaint.setColor(Color.WHITE);
    mBorderPaint.setStrokeWidth(STROKE_WIDTH);
}

@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    canvas.drawRect(PADDING, PADDING, getWidth() - PADDING, getHeight() - PADDING, mBorderPaint);
}
}
它没有提供想要的圆角,但不是真正必要的。这只是在图像周围创建了一个边框

  • 在drawable文件夹naming border.xml中创建xml并添加以下代码:

      <?xml version="1.0" encoding="utf-8"?>
       <shape xmlns:android="http://schemas.android.com/apk/res/android" 
        android:shape="rectangle">
       <solid android:color="@android:color/transparent" />
     <stroke android:width="0.7dip" android:color="#808080"/>
     </shape>
    
    
    
  • 现在将其添加到框架布局中,并将imageview放入框架布局中,就完成了

    <FrameLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:background="@drawable/border"
    android:padding="3dp" >
    
    <ImageView
        android:id="@+id/image"
        android:layout_width="100dp"
        android:layout_height="110dp"
      android:layout_margin="1dp"     />
    </FrameLayout>
    
    
    
  • 希望能有帮助。 谢谢:)

  • 在drawable文件夹naming border.xml中创建xml,并向其中添加以下代码:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <size android:height="100dp" android:width="100dp"/>
    <solid android:color="@android:color/transparent" />
    <stroke android:width="5dip" android:color="#f2db2f"/>
    </shape>
    
    
    
  • 在布局中添加以下内容:

    <FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:foregroundGravity="center|top"
    android:foreground="@drawable/border"
    android:layout_weight="4">
    <ImageView
    android:id="@+id/dog"
    android:scaleType="centerCrop"
    android:src="@drawable/gears"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
    </FrameLayout>
    
    
    

  • 你能把你所看到的和你想要达到的目标加上一张图片吗?因为这就是我看到的:我已经发布了我的解决方案。