简体   繁体   English

Android CustomView获取像素

[英]Android customview get pixel

I have a custom view and I want to get pixel by a given position on ACTION_UP event. 我有一个自定义视图,我想在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);
    }
}

I'm getting only 0 when I'm calling mBitmap.getPixel(x, y); 当我调用mBitmap.getPixel(x, y);时我只有0 mBitmap.getPixel(x, y);

在此处输入图片说明

  • I've marked the ontouch events on the image with black circle 我已在图像上用黑色圆圈标记了ontouch事件

You create a bitmap, and a canvas for that bitmap. 您创建一个位图,并为该位图创建一个画布。 But you never draw to it. 但是您永远不会吸引它。 Since you never draw to it, it will be whatever the default value of a new bitmap is, which is most likely to be either random or 0. 由于您从未使用过它,所以它将是新位图的默认值,无论该默认值是随机的还是0。

Unless you didn't post the drawing code, in which case we'll need that too. 除非您没有发布绘图代码,否则在这种情况下我们也将需要它。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM