在Android中用画布绘制四分之一规?

赛义德·哈希米

如何创建与此相同的量表?该量规类型是否存在任何库或Maven?我用帆布做圆规,但无法创建

 RectF oval = getOval(canvas, 1);
    RectF oval2 = getOval(canvas, 1.1f);

    Paint paint = new Paint();
    paint.setColor(Color.DKGRAY);

    canvas.drawArc(oval2, 180, 90, true, paint);
    canvas.drawArc(oval, 180, 90, true, backgroundPaint);

    RectF innerOval = getOval(canvas, 0.9f);
    canvas.drawArc(innerOval, 180, 90, true, backgroundInnerPaint);

<GaugeView
        android:id="@+id/gauge"
        android:layout_width="@dimen/panel_gauge_height"
        android:layout_height="@dimen/panel_gauge_width"
        app:divisions="8"
        app:scaleEndValue="8"
        app:scaleStartAngle="50"
        app:scaleStartValue="0"
        app:showNeedle="true"
        app:subdivisions="2" />

在此处输入图片说明

亨利
  1. 你可以只是谷歌找到一堆的GagueViews。我想你已经做到了。

  2. 这看起来很简单。这样您就可以编写自己的习惯了View您可以drawArc用来绘制3种不同的颜色弧。您可以drawLine用来绘制测量点(只记得设置Paint.setStrokeCap(Cap.Round))。至于针,您可以使用drawPath通过一些努力和正确的坐标,您应该能够自己编写一个漂亮的GaugeView。

  3. 如果您发现编写自己的视图很困难,可以在参考资料GaugeViewGitHub您将获得一个很好的起点。

更新:我GaugeView根据您所问的图像写了一个简单的文章。计算以像素为单位,您可能需要将它们乘以DisplayMetrics.density,以便它们以独立像素为单位。另外,您可能想在此处通过xml公开大多数值,以便可以在布局中控制它们。这可能是一个很好的起点。

public class GaugeView extends View {

    private Paint arcPaint;

    public GaugeView(Context context) {
        super(context);
        initialize();
    }

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

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

    private void initialize() {
        arcPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        arcPaint.setStyle(Paint.Style.STROKE);
        arcPaint.setStrokeWidth(15f);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        int width = canvas.getWidth();
        int height = canvas.getHeight();

        int arcCenterX = width - 10;
        int arcCenterY = height - 10;

        final RectF arcBounds = new RectF(arcCenterX - 100, arcCenterY - 100, arcCenterX + 100, arcCenterY + 100);


        // Draw the arc
        canvas.drawArc(arcBounds, 180f, 20f, false, arcPaint);
        arcPaint.setColor(Color.DKGRAY);
        canvas.drawArc(arcBounds, 200f, 40f, false, arcPaint);
        arcPaint.setColor(Color.GRAY);
        canvas.drawArc(arcBounds, 2400f, 30f, false, arcPaint);

        // Draw the pointers
        final int totalNoOfPointers = 20;
        final int pointerMaxHeight = 25;
        final int pointerMinHeight = 15;

        int startX = arcCenterX - 120;
        int startY = arcCenterY;
        arcPaint.setStrokeWidth(5f);
        arcPaint.setStrokeCap(Paint.Cap.ROUND);

        int pointerHeight;
        for (int i = 0; i <= totalNoOfPointers; i++) {
            if(i%5 == 0){
                pointerHeight = pointerMaxHeight;
            }else{
                pointerHeight = pointerMinHeight;
            }
            canvas.drawLine(startX, startY, startX - pointerHeight, startY, arcPaint);
            canvas.rotate(90f/totalNoOfPointers, arcCenterX, arcCenterY);
        }
    }
}


最终渲染的图像如下所示:
最终的GuageView

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

四分之一假人的线性回归

来自分类Dev

如何在Matlab中绘制四分之一图?

来自分类Dev

使用GLU在C ++中绘制四分之一圆

来自分类Dev

Android RatingBar-四分之一星步长

来自分类Dev

Android:OpenGL仅在Exynos设备上的四分之一屏幕上绘图

来自分类Dev

自定义导航栏 Android - 四分之一屏幕高度和透明背景

来自分类Dev

尝试在R中的名称和产品中添加缺少的四分之一

来自分类Dev

在叠加UIView的右下角创建四分之一透明孔

来自分类Dev

Rails 4:如何添加/减去Date的四分之一倍?

来自分类Dev

根据R中的日期(四分之一)创建排名

来自分类Dev

查找DateTimePicker选择的日期的四分之一

来自分类Dev

仅从r中的日期中提取四分之一

来自分类Dev

将+1加到R中的四分之一(日期)

来自分类Dev

如何从四分之一字符串推断DateTime?

来自分类Dev

在熊猫中转换预定义的四分之一

来自分类Dev

在R中向后生成四分之一序列

来自分类Dev

使用日期序列,将数字除以四分之一天的天数

来自分类Dev

SQL获取四分之一季度值

来自分类Dev

OpenGL半圆旋转和四分之一圆

来自分类Dev

使用CSS创建动态四分之一圆

来自分类Dev

Gnome Shell窗口捕捉到四分之一的屏幕

来自分类Dev

动能JS画出四分之一弧

来自分类Dev

Rails 4:如何添加/减去Date的四分之一倍?

来自分类Dev

如何通过自动布局四分之一

来自分类Dev

在Windows 10中禁用四分之一屏幕

来自分类Dev

Microsoft Excel填充单元格的底部四分之一

来自分类Dev

查询以在SQL中添加四分之一条件

来自分类Dev

从Stata中的日期变量中提取四分之一

来自分类Dev

尝试在R中的名称和产品中添加缺少的四分之一

Related 相关文章

热门标签

归档