1

Canvas の学習を開始し、これまでに 2 つのクラス (ビューとビューを呼び出すメインのクラス) を持っています。View クラス onDraw はターゲットを作成します (つまり、cicles の数とそれぞれが異なる色で表示されます)。

ユーザーがクリックした x と y を記録するオンタッチリスナーを設定しました

私の問題は、ユーザーが触れる新しい円/点を描くことです

クラスで更新

メインクラス

public class StartScreen extends Activity {

    DrawView drawView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        drawView = new DrawView(this);
        drawView.setBackgroundColor(Color.WHITE);
        setContentView(drawView);
}

ドロークラス

public class DrawView extends View implements View.OnTouchListener {

    private Paint paint[];

    private Context context;
    private Canvas canvas;

    //definging some variables

    public DrawView(Context pContext) {
        super(pContext);  
        this.context = pContext;

        WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();

        paint = new Paint[5];
        setupColours();

    // setting varibale like raduis etc



    }

    private void setupColours() {

        // Creating Arrray of Paint Colours

    }

    @Override
    public void onDraw(Canvas pCanvas) {

        canvas = pCanvas;

        newRadius = radius;

        for (int i = 0; i < rings; i++) {


            if (i == 3) {
                canvas.drawCircle(centreWidth, centreHeight, newRadius, paint[0]);
            } else {
                canvas.drawCircle(centreWidth, centreHeight, newRadius, paint[1]);
            }


            canvas.drawCircle(centreWidth, centreHeight, newRadius - targetBoundary, paint[i / 2]);

            newRadius = newRadius - ringOffset;

        }

        this.setOnTouchListener(this);

    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Log.d("TAG2", "x: " + event.getX() + " y: " + event.getY());
        drawHit(event.getX(), event.getY());
        return true;
    }

    public void drawHit(float hitX, float hitY) {
        Log.d("HIT", "Hit being drawn");

        Paint paint2 = new Paint();
        paint2.setColor(Color.BLACK);

        canvas.drawCircle(hitX, hitY, 100, paint2);

    }

メソッドは呼び出されますが、円は描画されていません。私は何を間違っていますか。ありがとう

4

1 に答える 1

3

質問で提供した情報はほとんどありません。少し詳しく説明しても問題ありません。ターゲット (円) は希望どおりに作成されていますか? はいの場合は、FrameLayout を取得し、「addView」メソッドを使用してボールをメイン ビューにオーバーレイします。

少し古いですが、役に立つかもしれないチュートリアル: http://www.kellbot.com/2009/06/android-hello-circle/

幸運を

于 2012-07-04T12:56:45.347 に答える