获取包含位图支持的canvas的Android视图上的点的像素颜色值

我试图找出最佳的方式来获取视图上给定点的像素颜色值。 有三种方法可以写入视图:

  1. 我用View.setBackgroundDrawable(…)设置了一个背景图像。

  2. 我用Canvas.drawText(…) , Canvas.drawLine(…)等写入文本,画线等,到一个位图支持的canvas 。

  3. 我通过写入传递给View的onDraw(Canvas canvas)方法的Canvas来绘制子对象(精灵)。

这是从我的类扩展视图的onDraw()方法:

@Override public void onDraw(Canvas canvas) { // 1. Redraw the background image. super.onDraw(canvas); // 2. Redraw any text, lines, etc. canvas.drawBitmap(bitmap, 0, 0, null); // 3. Redraw the sprites. for (Sprite sprite : sprites) { sprite.onDraw(canvas); } } 

获得一个像素的颜色值的最好方法是什么,这将考虑所有这些来源?

Solutions Collecting From Web of "获取包含位图支持的canvas的Android视图上的点的像素颜色值"

如何加载视图到位图(在所有的绘图/精灵等完成后的某个时间点),然后从位图获取像素颜色?

 public static Bitmap loadBitmapFromView(View v) { Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); v.draw(c); return b; } 

那么对结果使用getPixel(x,y)?

http://developer.android.com/reference/android/graphics/Bitmap.html#getPixel%28int,%20int%29