【问题标题】:Keep Canvas ratio and scaling in Android on rotation在 Android 中保持 Canvas 比例和缩放旋转
【发布时间】:2015-11-01 09:11:49
【问题描述】:

我创建了 CanvasView 对象扩展 View 类,并在我的应用程序清单中覆盖了 configChanged,如您所见,Canvas 无法再次正确重绘。

  • 肖像:

  • 风景

看起来旋转不会影响 Canvas 对象。

我尝试过再次无效化和重绘,但似乎没有任何区别。

    @Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);

    if(canvasBitmap == null){
        canvasBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
    }else{
        Bitmap temporary = Bitmap.createScaledBitmap(canvasBitmap, w, h, true);
        canvasBitmap = temporary;
    }
    mCanvas = new Canvas(canvasBitmap);
    draw(mCanvas);
    invalidate();
}

我怎样才能保持画布比例和缩放显示它在旋转后适合新尺寸?

【问题讨论】:

  • 其实我关注的问题很好

标签: android canvas onconfigurationchanged


【解决方案1】:

我遇到了同样的问题,但使用以下方法修复了它:

override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
    super.onSizeChanged(w, h, oldw, oldh)
    if(bitMap == null) {
        bitMap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888)
        canvas = Canvas(bitMap)
    } else {
        bitMap = Bitmap.createScaledBitmap(bitMap, w, h, true)
        canvas = Canvas(bitMap)
        canvas.drawBitmap(bitMap, 0f, 0f, bitMapPaint)
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2022-01-10
    • 2012-03-22
    • 2012-08-06
    • 1970-01-01
    • 2012-05-14
    • 2010-12-31
    相关资源
    最近更新 更多