Пользовательский вид Android получить пиксель

У меня есть пользовательский вид, и я хочу получить пиксель по заданной позиции в событии ACTION_UP.

public class MyView extends View
{
    private Bitmap mBitmap;
    private Canvas mCanvas;
    private Paint mPaint;

    public MyView(Context context)
    {
        super(context);
    }

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

        setDrawingCacheEnabled(true);

        mBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
        mCanvas = new Canvas(mBitmap);

        mPaint = new Paint();
        mPaint.setColor(Color.RED);
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setStrokeWidth(20f);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
    }

    @Override
    protected void onDraw(Canvas canvas)
    {
        canvas.drawBitmap(mBitmap, 0, 0, mPaint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        switch (event.getAction())
        {
            case MotionEvent.ACTION_UP:
            {
                float x = event.getX();
                float y = event.getY();

                int pixel = mBitmap.getPixel((int) x, (int) y);

                Log.i("APP", "Pixel is: " + pixel);

                return true;
            }
        }

        return super.onTouchEvent(event);
    }
}

Я получаю только 0, когда звоню mBitmap.getPixel(x, y);

введите здесь описание изображения

  • Я отметил события касания на изображении черным кружком.

person Zbarcea Christian    schedule 12.07.2014    source источник


Ответы (1)


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

Если вы не разместили код чертежа, в этом случае он нам тоже понадобится.

person Gabe Sechan    schedule 12.07.2014