rpe*_*yng 16 android android-custom-view android-canvas
我试图从画布上"擦除".就像清理画布的非常简单的测试一样,我实现了以下内容:
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.argb(140, 0, 0, 0));
canvas.drawColor(0, Mode.CLEAR);
}
Run Code Online (Sandbox Code Playgroud)
Color.argb(140, 0, 0, 0)设置此视图被绘制的视图以使其变暗. drawColor(0, Mode.CLEAR)使屏幕完全变黑,而不是删除之前应用的调光. 这个想法来自这里
小智 21
使用以下内容.
canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);
Run Code Online (Sandbox Code Playgroud)
rpe*_*yng 12
解决方案是创建一个辅助画布和位图来绘制.我的自定义视图的onSizeChanged()方法看起来像
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
bitmap.eraseColor(Color.TRANSPARENT);
temp = new Canvas(bitmap);
}
Run Code Online (Sandbox Code Playgroud)
和onDrawMethod看起来像
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
temp.drawColor(Color.argb(80, 0, 0, 0));
temp.drawCircle(centerPosX, centerPosY, 200, transparentPaint);
canvas.drawBitmap(bitmap, 0, 0, null);
}
Run Code Online (Sandbox Code Playgroud)
其中transparentPaint在onstructor中声明为
transparentPaint = new Paint();
transparentPaint.setColor(getResources().getColor(android.R.color.transparent));
transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
transparentPaint.setAntiAlias(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17129 次 |
| 最近记录: |