[英]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);
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.