如何在Android的SurfaceView上绘制图像

8

我希望在SurfaceView上添加图片并使其可点击。使用布局,我可以通过xml实现它。但是我无法从代码中动态执行此操作。我甚至无法使用lockcanvas在画布上绘制图像,因为我将SurfaceHolder类型设置为SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS。那么我该怎么在我的应用程序中在SurfaceView上绘制图像呢?请指导我。

1个回答

12

类似那样的东西

public class MSurface extends SurfaceView implements SurfaceHolder.Callback {

    public MSurface(Context context) {
        super(context);
        getHolder().addCallback(this);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.icon);
        canvas.drawColor(Color.BLACK);
        canvas.drawBitmap(icon, 10, 10, new Paint());        
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        // TODO Auto-generated method stub
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        Canvas canvas = null;
        try {
            canvas = holder.lockCanvas(null);
            synchronized (holder) {
                onDraw(canvas);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (canvas != null) {
                holder.unlockCanvasAndPost(canvas);
            }
        }
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        // TODO Auto-generated method stub

    }
}

1
如何将图像设置在SurfaceView的中心,并如何将其拉伸到整个SurfaceView。 - Sunishtha Singh
如何缩放位图或填充/拉伸以覆盖整个SurfaceView? - TomeeNS
与上面的问题类似? - kemdo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接