Android: невозможно получить цвет с помощью ColourPicker, но можно получить цвет после того, как вы сфокусировались на этом виде - PullRequest
0 голосов
/ 10 декабря 2011

В приложении «Моя краска» я собираюсь выбрать цвет из средства выбора цвета.

MyApp выглядит так: Эта ссылка

Теперь я использую этот класс , чтобы выбрать цвет.

код, который я использую, чтобы выбрать цвет:

public void pickColour(){
    takePhotoFromCamera = false;
    takePhotoFromGallery = false;
    new UberColorPickerDialog(TWSBIDrawMainActivity.this, this, canvasColor, true).show(); // generats error here
    myView.getVisibility();
}

Метод переопределения для этого средства выбора:

@Override
public void colorChanged(int color) {
    // TODO Auto-generated method stub
    TWSBIDrawMainActivity.canvasColor = color;
    float hsv[] = new float[3];
    Color.colorToHSV(TWSBIDrawMainActivity.canvasColor, hsv);
}

И я рисую этот цвет в классе MyView с кодом:

@Override
    protected void onDraw(Canvas canvas) {

        //canvas.drawColor(0, PorterDuff.Mode.CLEAR);
        // set the Canvas Color
        canvas.drawColor(canvasColor);
 }

Теперь, когда я выбираю цвет из палитры, он выбирается, но когда я нажимаю на «Принять», это не повлияет на этот вид, но пока я касаюсь этого вида, он вступает в силу.

Вместо этого я хочу, чтобы цвет получал эффект, когда я нажимал на кнопку «Принять» из палитры.

Пожалуйста, помогите мне в этом. Спасибо.

Отредактировано:

Пожалуйста, смотрите этот скриншот: enter image description here

Здесь после открытия диалогового окна, если я нажму кнопку подтверждения, цвет должен вступить в силу на белом фоне. но вместо этого прямо сейчас, если я нажму кнопку «Принять», а затем, если коснусь белого фона, то вступит в силу только цвет. Так что я должен делать?

Надеюсь, вы поняли мою точку зрения. Мне действительно нужна помощь в этом вопросе. Помогите мне, пожалуйста. , Спасибо.

Ответы [ 2 ]

1 голос
/ 10 декабря 2011

Soln выглядит так, как будто вам нужно вызвать недействительный объект в представлении после выбора цвета.

try myView.invalidate() in colorChanged like

@Override
public void colorChanged(int color) {
    // TODO Auto-generated method stub
    TWSBIDrawMainActivity.canvasColor = color;
    float hsv[] = new float[3];
    Color.colorToHSV(TWSBIDrawMainActivity.canvasColor, hsv);
    myView.invalidate();
}

Подробнее об этом вид

0 голосов
/ 28 ноября 2012

Вы меняете класс MyView в функции OnDraw следующим образом.

@ Override protected void onDraw (Canvas canvas) {

    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
    int colorPicked = MainActivity.selectedColor;

    paint1 = createPen(colorPicked);
     for (Path p : paths){       
         canvas.drawPath(p, paint1);
         paint1.setColor(colorPicked);
         }

    }

private Paint createPen(int color) {
    // TODO Auto-generated method stub

    paint1 = new Paint();
    paint1.setAntiAlias(true);
    paint1.setDither(true);
    paint1.setStyle(Paint.Style.STROKE);
    paint1.setStrokeJoin(Paint.Join.ROUND);
    paint1.setStrokeCap(Paint.Cap.ROUND);
    paint1.setStrokeWidth(3);
    return paint1;
}
...