Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式更改可绘制图形的角半径_Java_Android_Xml_Drawable_Shape - Fatal编程技术网

Java 以编程方式更改可绘制图形的角半径

Java 以编程方式更改可绘制图形的角半径,java,android,xml,drawable,shape,Java,Android,Xml,Drawable,Shape,我在xml中定义了此形状: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:startColor="#FFFF0000" android:endColor="#80FF0

我在xml中定义了此形状:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#FFFF0000"
        android:endColor="#80FF00FF"
        android:angle="45"/>
    <padding android:left="7dp" 
        android:top="7dp"
        android:right="7dp"
        android:bottom="7dp" />
    <corners
        android:bottomLeftRadius="5dp"    ##this need change
        android:bottomRightRadius="5dp"   ##this need change
        android:topLeftRadius="5dp"       ##this need change
        android:topRightRadius="5dp" />   ##this need change
</shape>

##这需要改变
我正在创建以下对象:

Drawable shape=getResource().getDrawable(R.Drawable.myshape)

我需要修改它的半径(或者用另一个角半径创建一个)


如何更改半径?如何以编程方式创建形状?

我解决了问题。解决方案如下:

private Drawable getShape(){
    GradientDrawable gradientDrawable = new GradientDrawable(GradientDrawable.Orientation.TL_BR, new int[] { startColor,
            centerColor, endColor});
    gradientDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
    gradientDrawable.setCornerRadii(getRandomFloatArray());
    gradientDrawable.setGradientCenter(0.0f, 0.45f);

    return gradientDrawable;
}

private float [] getRandomFloatArray(){
    Random rnd = new Random();
    float[] floats = new float[8];
    for (int i =0; i < floats.length; i++){
        floats[i] = rnd.nextInt(45);
    }
    return floats;
}
private可绘制getShape(){
GradientDrawable GradientDrawable=新的GradientDrawable(GradientDrawable.Orientation.TL_BR,新int[]{startColor,
centerColor,endColor});
gradientDrawable.setGradientType(gradientDrawable.LINEAR_GRADIENT);
setCornerRadii(getRandomFloatArray());
gradientDrawable.setGradientCenter(0.0f,0.45f);
返回梯度可绘制;
}
私有浮点[]getRandomFloatArray(){
随机rnd=新随机();
浮动[]浮动=新浮动[8];
for(int i=0;i
查看ChrisJD给出的答案,并访问以编程方式获取有关设置角的更多信息。如果您解决了问题,请发布答案和解决方案并接受。