Android 以编程方式设置正方形的半径

Android 以编程方式设置正方形的半径,android,android-imageview,Android,Android Imageview,我正在自定义布局扩展中设计任何正方形ImageView,但我找不到任何关于如何设置半径或圆形正方形的文档我的正方形如下所示: 但我需要像这样: 我的代码: public class GameView extends ImageView { private Paint paint; private Paint textPaint; private int with; private int height; private int[][] cells =

我正在自定义布局扩展中设计任何正方形
ImageView
,但我找不到任何关于如何设置半径或圆形正方形的文档我的正方形如下所示:

但我需要像这样:

我的代码:

public class GameView extends ImageView {
    private Paint paint;
    private Paint textPaint;
    private int with;
    private int height;
    private int[][] cells = new int[4][4];
    public GameView(Context context) {
        super(context);
        initialize();
    }

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

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

    public void initialize(){
        paint = new Paint();
        paint.setColor(Color.parseColor("#afafaf"));
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
        paint.setAntiAlias(true);

    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int size = with / 4;
        int padding = 5;
        for ( int i=0; i < 4 ; i++)
        {
            for( int j=0; j < 4 ; j++){
                Rect rect = new Rect( i*size + padding , j*size + padding , (i+1) *size - padding, (j+1)*size - padding );
                canvas.drawRect(rect, paint);
            }
        }
    }
}
公共类GameView扩展了ImageView{
私人油漆;
私人涂料;
私用int;
私人内部高度;
私有int[][]单元格=新int[4][4];
公共游戏视图(上下文){
超级(上下文);
初始化();
}
公共游戏视图(上下文、属性集属性){
超级(上下文,attrs);
初始化();
}
公共游戏视图(上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
初始化();
}
公共无效初始化(){
油漆=新油漆();
paint.setColor(Color.parseColor(#afafaf”);
绘制.设置样式(绘制.样式.填充和笔划);
paint.setAntiAlias(真);
}
@凌驾
受保护的void onDraw(画布){
super.onDraw(帆布);
int size=带/4;
int=5;
对于(int i=0;i<4;i++)
{
对于(int j=0;j<4;j++){
Rect Rect=new Rect(i*size+padding,j*size+padding,(i+1)*size-padding,(j+1)*size-padding);
画布.drawRect(rect,paint);
}
}
}
}

这就是你所要做的一切。在可绘制文件夹中创建一个名为rounded_rect.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="#afafaf"/>    

    <stroke android:width="3dp"
        android:color="#ffafafaf"/>

    <padding android:left="5dp"
         android:top="5dp"
         android:right="5dp"
         android:bottom="5dp"/> 

    <corners android:radius="5px"/> 
</shape>

不过我还没有测试过,如果它不起作用,请告诉我,我会做一些修改。

仅使用可绘制的形状可能更容易完成。@zgc7009 xml文件中的形状?我找不到关于它的文档或集合that@zgc7009这条路很难我想简单一点这条路超级简单。。。一个简单的xml布局怎么会比创建和管理自己的自定义视图更困难呢?哦,不!!我想在此行中为
Rect
设置半径:
Rect-Rect=new Rect(i*size+padding,j*size+padding,(i+1)*size-padding,(j+1)*size-padding)
不适用于xml布局,如
EditText
等@andbee我可能会对您的要求感到困惑,因为这将设置矩形的半径,只需使用它并执行您想要的操作即可。我不太清楚为什么要在Java中使用自定义视图来管理它,但如果这是您真正想要做的,我想其他人可能会提供帮助。
android:src="@drawable/rounded_rect"