Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.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
Android 用记号笔圈出_Android_Eclipse_Geometry_Marker - Fatal编程技术网

Android 用记号笔圈出

Android 用记号笔圈出,android,eclipse,geometry,marker,Android,Eclipse,Geometry,Marker,我希望我能在Android中实现我在这个屏幕截图中显示的内容: 圆圈内的数字对我来说没有问题(只需做一些说明)。但我不知道怎样画圆圈,也不知道怎样画记号笔 我是说,它就像一个速度计。然后我想根据数值,标记位于与数值匹配的圆的位置(该值在0-100范围内移动,因此圆中标记的最小值显然为0或100) 我有点受不了了,欢迎任何帮助。谢谢。我为您创建了一个circleView..试一试 CircleView.java package com.example.err2; import android.

我希望我能在Android中实现我在这个屏幕截图中显示的内容:

圆圈内的数字对我来说没有问题(只需做一些说明)。但我不知道怎样画圆圈,也不知道怎样画记号笔

我是说,它就像一个速度计。然后我想根据数值,标记位于与数值匹配的圆的位置(该值在0-100范围内移动,因此圆中标记的最小值显然为0或100)


我有点受不了了,欢迎任何帮助。谢谢。

我为您创建了一个circleView..试一试

CircleView.java

package com.example.err2;

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

public class Circle extends View {

    int radius, number, fontSize = 80;
    Paint myPaint;

    public void setRadius(int radius) {
        this.radius = radius;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    private void init() {
        Log.d("init", "start");
        myPaint = new Paint();
        myPaint.setColor(Color.RED);
    }

    public Circle(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
        init();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        canvas.save();
        // Drawing main crcle
        canvas.drawCircle(getWidth() / 2, 
            getHeight() / 2, 
            radius, myPaint);
        myPaint.setColor(Color.WHITE);
        canvas.drawCircle(getWidth() / 2, 
            getHeight() / 2, 
            radius - 10, myPaint);
        // end of main circle

        // drawing text-number
        myPaint.setColor(Color.BLACK);
        myPaint.setTextSize(fontSize);
        myPaint.setTextAlign(Align.CENTER);
        myPaint.setFakeBoldText(true);
        canvas.drawText(number + "", 
            getWidth() / 2, 
            getHeight() / 2 + fontSize / 3, myPaint);
        // end of drwaing text

        // drawing point on circle boundry
        // findPointLocation();
        double deg = number * 3.6f;
        double radians = Math.toRadians(deg);
        int px = (int) Math.abs(radius * Math.sin(radians));
        int py = (int) Math.abs(radius * Math.cos(radians));
        if (number <= 25) {
            px = -px;
        } else if (number <= 50) {
            px = -px;
            py = -py;
        } else if (number <= 75) {
            py = -py;
        }
        // end od find point
        myPaint.setColor(Color.GREEN);
        canvas.drawCircle(getWidth() / 2 + px, getHeight() / 2 + py, 15,
                myPaint);
        // end of drawing point
        canvas.restore();
    }
}
public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Circle circle=(Circle)findViewById(R.id.circle1);
        circle.setRadius(100);
        circle.setNumber(90);
    }
}
下面给出了xml代码 XML

<com.example.err2.Circle
    android:id="@+id/circle1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="73dp"
    android:background="#778888" />


这对我不起作用。它在公共类MainActivity扩展ActionBarActivity一行上显示了此错误。。。错误是:ActionBarActivity无法解析为类型…MainActivity扩展活动-这将起作用。。。或者,您可以将以下代码放入您的主活动圆圈=(圆圈)findViewById(R.id.circle1);圆。设定半径(100);圈。设置编号(90);这可能是由于程序包naem造成的。请将“com.example.err2”替换为您的程序包名称。程序包名称已更改,但仍显示错误。我还显示了方法循环中的许多错误。。。你能仔细看看他的项目吗?我不知道为什么你的代码对我无效,我明白了。eclipse出了点问题。。。我关了又开。。。还有魔法,现在它起作用了。一件事:我试图得到红色圆圈的边缘d eun是另一个渐变色,但不能。我尝试过:myPaint.setShader(新的RadialGradient(getWidth()/2,getHeight()/2,getHeight()/3,Color.TRANSPARENT,Color.BLACK,TileMode.MIRROR));但是应用程序停止并失败。