我在使用SurfaceView设置位图上绘制的区域路径的alpha值时遇到了问题。
我正在创建我的位图,并使用黑色擦除(255作为alpha)
bitmap = Bitmap.createBitmap(480, 724, Bitmap.Config.ARGB_8888);
bitmap.eraseColor(0xFF000000);
Canvas canvas = new Canvas(bitmap);
接下来,在我的onDraw方法中,我在位图上画了一条路径,有自己的alpha值,白色作为描边,黑色作为填充色,alpha值为1:
Paint border = new Paint();
border.setStyle(Paint.Style.STROKE);
border.setStrokeWidth(1);
border.setStrokeCap(Paint.Cap.BUTT);
border.setStrokeJoin(Paint.Join.MITER);
border.setColor(Color.WHITE);
Paint inside = new Paint();
inside.setAntiAlias(false);
inside.setStyle(Paint.Style.FILL);
int alpha = 1<<24;
inside.setColor(alpha);
canvas.drawBitmap(bitmap,0,0, null);
canvas.drawPath(path, border);
canvas.drawPath(path, inside);
最后,在我的onTouchEvent方法中,我这样做:
int index = bitmap.getPixel((int)event.getX(), (int)event.getY());
int alpha = index >>> 24;
Log.v("TAG", " Region path alpha :"+ String.valueOf(alpha));
所以,当我点击路径区域内,我期望有1 (0x01)作为alpha值,但我仍然有255 (0xFF)。这有什么不对吗?
我在通常的Java中尝试这个,并且没有错误!也许您应该尝试调试index的值。输出index的值并检查,或者直接尝试
Color.alpha(index)
http://developer.android.com/reference/android/graphics/Color.htmlα(int)