Ändern Sie Farbe, an Farbe und Leinwand auf Android

Sorry, wenn die Frage ist dumm, aber ich bin neu auf Android. Ich lese viel über die Entwickler.android.com -, sondern Lösungen für mein problem nicht gefunden, leider.
Die meisten der code, den ich gefunden auf stackoverflow, fertig ist das Teil.
Diese Ansicht eingefügt in die Tätigkeit im FrameLayout, über den text, und ermöglicht es Ihnen, mit Anmerkungen in das e-book.

import java.util.ArrayList;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class PaintSurface extends View implements OnTouchListener {

    private Canvas canvas;
    private Path path;
    private Paint paint;
    private ArrayList<Path> paths = new ArrayList<Path>();

    public PaintSurface(Context context) {
        super(context);
        setFocusable(true);
        setFocusableInTouchMode(true);

        this.setOnTouchListener(this);

        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setDither(true);
        paint.setStyle(Paint.Style.STROKE);
        paint.setStrokeJoin(Paint.Join.MITER);
        paint.setStrokeCap(Paint.Cap.SQUARE);
        paint.setColor(Color.RED);
        paint.setStrokeWidth(16);
        paint.setAlpha(100);
        canvas = new Canvas();
        path = new Path();
        paths.add(path);

    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        for (Path p : paths) {
            canvas.drawPath(p, paint);
        }

    }

    private float mX, mY;
    private static final float TOUCH_TOLERANCE = 4;

    private void touch_start(float x, float y) {
        path.reset();
        path.moveTo(x, y);
        mX = x;
        mY = y;
    }

    private void touch_move(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
            path.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
            mX = x;
            mY = y;
        }

    }

    private void touch_up() {
        path.lineTo(mX, mY);
        canvas.drawPath(path, paint);

        path = new Path();
        paths.add(path);

    }

    @Override
    public boolean onTouch(View arg0, MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            touch_start(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_MOVE:
            touch_move(x, y);
            invalidate();
            break;
        case MotionEvent.ACTION_UP:
            touch_up();
            invalidate();
            break;
        }
        return true;

    }

    public void setColor(int color) {
        paint.setColor(color);

    }
}

Beschreiben Sie das problem.
Ich ziehe die Linie von der Standard-Farbe, rot. Verwenden Sie dann die setColor() wechselt zu grün, um zu zeichnen eine grüne Linie in der Nähe der roten Linie. Aber die erste rote Zeile, die auch grün wird. Solche Veränderungen auftreten, wenn Sie den Stil zu ändern oder die Breite der Striche.
Wie ist es möglich, malen Sie eine andere Farbe?

Gefühl, dass in ein paar Monaten das problem scheint mir lächerlich und dumm, und ich fühle mich albern und ich würde mich schämen, aber jetzt weiß ich nicht, wie dieses problem zu lösen...

InformationsquelleAutor Alex Sh | 2012-11-19

Schreibe einen Kommentar