【问题标题】:Drawing shapes with random colors用随机颜色绘制形状
【发布时间】:2015-12-09 22:05:20
【问题描述】:

对 ui for android 相当陌生,搜索了很多但无法找到解决我的问题的方法。

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

到目前为止,我的方法是创建按钮并将形状(xml)设置为背景。效果很好,但我无法更改形状的颜色。此外,创建仅用于显示形状的按钮似乎有点过时。

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

【问题讨论】:

    标签: android user-interface shape


    【解决方案1】:

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

    • drawCircle(float cx, float cy, float radius, 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 或以编程方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2016-02-20
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      相关资源
      最近更新 更多