【问题标题】:Android: not able to get the color with using the ColourPicker but can get color after get the focus on that viewAndroid:无法使用 ColourPicker 获取颜色,但可以在获得该视图的焦点后获取颜色
【发布时间】:2011-12-10 05:58:36
【问题描述】:

在 My Paint 应用程序中,我将从颜色选择器中选择颜色。

MyApp 是这样的:This link

现在我正在使用this class 来选择颜色。

我用来选择颜色的代码是:

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

picker 的 Override 方法是:

@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);
 }

现在,当我从选择器中选择颜色时,它被选中,但是当我按下接受时,它不会影响该视图,但当我触摸该视图时,它就会生效。

我想要的是当我从选择器按接受时颜色应该生效。

请帮助我。 谢谢。

已编辑:

请看这个屏幕截图:

在打开对话框后,如果我按下接受按钮,那么颜色应该在白色背景上生效。但不是现在,如果我按下接受按钮,然后如果我触摸白色背景,那么只有颜色生效。那我该怎么办?

希望你明白我的意思。 我真的需要这个问题的帮助。 请帮我。 . 谢谢。

【问题讨论】:

  • 我是否应该将注意力集中在我要在函数中绘制颜色的视图上?
  • 你能解释一下你到底想要什么...你已经画了一条你想改变颜色的线吗?还是什么?
  • @havexz :在那个 Link 应用程序中,颜色选择器用于 mPaint 颜色,但我打算使用该选择器来设置画布的背景颜色。但它会在对话框关闭并且我触摸视图后生效。
  • 假设如果我用这个选择器改变背景的颜色,那么在我触摸到那个视图之后它就会生效。
  • 所以您希望颜色在您选择而不是在您触摸视图后立即生效?可以提供截图吗?

标签: android android-layout colors android-canvas color-picker


【解决方案1】:

在选择颜色后,soln 看起来您必须在视图上调用 invalidate。

colorChanged 中尝试myView.invalidate() 喜欢

@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();
}

这里有更多关于view的帮助

【讨论】:

  • 感谢您的回复。我做了喜欢它,但仍然没有得到效果。
【解决方案2】:

您在 OnDraw 函数中的 MyView 类中更改如下。

@覆盖 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;
}

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多