用随机颜色绘制形状

时间:2015-12-09 22:05:20

标签: android user-interface shape

对于Android来说,ui相当新,搜索了很多,但无法为我的问题找到解决方案。

目标: 我想在屏幕上显示随机颜色的随机形状。

到目前为止,我的方法是创建按钮并将形状(xml)设置为背景。这工作正常,但我无法改变形状的颜色。此外,创建按钮只是为了显示形状似乎有点小。

创建形状的最佳方法是什么(例如方形,三角形等),从colors.xml中给它一个随机颜色并最终显示它?

1 个答案:

答案 0 :(得分:1)

您可以创建自己的自定义视图,并使用onDraw(Canvas canvas)方法通过调用以下canvas类方法将圆形,矩形,三角形绘制到Canvas对象:

  • drawCircle(float cx,float cy,float radius,Paint paint)
  • drawOval(左浮,浮顶,右浮,浮底,油漆)
  • drawRect(左浮,浮顶,右浮,浮底,油漆)

要更改颜色,您可以使用Paint类为其设置不同的颜色,如下所示:

paint.setColor(Color.RED);

这是一个非常简单的自定义View类,我用它绘制不同颜色的形状:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;

/**
 * Created by Arlind on 09-Dec-15.
 */
public class ArlindCustomView extends View
{
    private Paint paint = new Paint();

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

    public ArlindCustomView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

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

    @Override
    public void onDraw(Canvas canvas)
    {
        paint.setAntiAlias(true);
        paint.setColor(Color.RED);
        canvas.drawCircle(300,100,50,paint);
        paint.setColor(Color.BLUE);
        canvas.drawCircle(80,90,70,paint);

        paint.setColor(Color.BLUE);
        canvas.drawRect(200, 200, 250, 250, paint);
        paint.setColor(Color.YELLOW);
        canvas.drawRect(300, 300, 350, 350, paint);
    }

}

您可以将此类添加到xml或以编程方式添加。