【问题标题】:drawBitmap is not fullscreendrawBitmap 不是全屏的
【发布时间】:2011-12-11 13:12:43
【问题描述】:

我使用这样的 onDraw 方法显示图像:

public void onDraw(Canvas canvas) {
     super.onDraw(canvas);
     Bitmap background = BitmapFactory.decodeResource(getResources(), R.drawable.photo0);
     canvas.drawColor(Color.BLACK);
     canvas.drawBitmap(background, 0, 0, null);

我想将此图像设置为背景,但它只显示在屏幕的一部分上。如何设置为全屏?

有没有办法从 xml 中将图片设置为背景,并通过 onDraw 方法在该图片上绘制其他图片?

【问题讨论】:

    标签: android image fullscreen ondraw


    【解决方案1】:

    试试这个:

    ...
    Rect dest = new Rect(0, 0, getWidth(), getHeight());
    Paint paint = new Paint();
    paint.setFilterBitmap(true);
    canvas.drawBitmap(background, null, dest, paint);
    

    这会将位图的一部分(“null”表示整个位图)渲染到 dest 指定的屏幕区域(在这种情况下是视图的整个区域)。

    请注意,这将/可能会改变纵横比,具体取决于背景,您可能需要修复它。

    【讨论】:

    • 这会改变图像的质量。如果我将图像设置为 xml 的背景,它看起来还可以,但是像这样不清楚
    • 要修复质量,创建一个 Paint 对象并调用 setFilterBitmap(true)。这会将默认的“最近邻”采样替换为“线性”。
    • 这样做了,但图像仍然只填充了较大画布的一部分。
    【解决方案2】:

    这对我有用。

          WindowManager wm = (WindowManager) mContext
                .getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width=size.x;
        int height= size.y;
    
        Rect dest = new Rect(0, 0, width, height);
        Paint paint = new Paint();
        paint.setFilterBitmap(true);
        canvas.drawBitmap(bm, null, dest, paint); //bm is your bitmap
    

    【讨论】:

    • 你能解释一下为什么问题代码不起作用吗?
    • 因为位图不是根据设备的屏幕尺寸绘制的。首先,我们必须利用设备的资源来绘制位图,例如宽度和高度。如果我的回答对您有帮助,请投票。
    • 关于答案我的意思是^_^
    猜你喜欢
    • 2011-12-13
    • 1970-01-01
    • 2022-10-19
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    相关资源
    最近更新 更多