Kar*_*hik 9 android canvas image transparent
我想让Canvas区域透明,因为我想在它后面添加一个Image,以便Canvas动作发生在图像上方.我的画布代码在这里
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
private ViewThread mThread;
private ArrayList<Element> mElements = new ArrayList<Element>();
public Panel(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
mThread = new ViewThread(this);
}
public void doDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
synchronized (mElements) {
for (Element element : mElements) {
element.doDraw(canvas);
}
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (!mThread.isAlive()) {
mThread = new ViewThread(this);
mThread.setRunning(true);
mThread.start();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mThread.isAlive()) {
mThread.setRunning(false);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
synchronized (mElements) {
mElements.add(new Element(getResources(), (int) event.getX(), (int) event.getY()));
}
return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
}
如何实现它,任何片段都会非常有用.谢谢
Kar*_*hik 24
我得到了输出
public Panel(Context context, AttributeSet attrs) {
super(context, attrs);
this.setBackgroundColor(Color.TRANSPARENT);
this.setZOrderOnTop(true); //necessary
getHolder().setFormat(PixelFormat.TRANSPARENT);
getHolder().addCallback(this);
mThread = new ViewThread(this);
}
Run Code Online (Sandbox Code Playgroud)
Uni*_*paw 12
如果您想要具有透明背景的画布,则必须为其配置背景图像
mCanvas = new Canvas(mBackgroundBitmap);
使用Bitmap.Config.ARGB_4444
并使用像0x00000000这样的颜色作为透明
Bitmap mBackgroundImage = Bitmap.createBitmap(Size, Size,
Bitmap.Config.ARGB_4444);
mCanvas = new Canvas(mBackgroundImage);
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!我有一个非常透明的画布:D yay!
canvas.drawColor(Color.argb(0, 255, 255, 255));
Run Code Online (Sandbox Code Playgroud)
第一个属性是alpha,rest是RGB颜色.
要么
canvas.drawColor(Color.TRANSPARENT);
Run Code Online (Sandbox Code Playgroud)
小智 7
这使画布透明,这对我有用:)
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.OVERLAY);
Run Code Online (Sandbox Code Playgroud)
小智 5
在您的onDraw()方法中添加以下内容:
canvas.drawColor(0x00AAAAAA);
Run Code Online (Sandbox Code Playgroud)
这将使您的canvas透明和background View可见。
| 归档时间: |
|
| 查看次数: |
43600 次 |
| 最近记录: |