使较小的画布匹配父级

时间:2013-11-22 11:20:47

标签: android

我有一个640x640像素的方形画布。我希望这个画布匹配其父720x720像素。我已经尝试过缩放它但是方块的大小保持不变但内容是缩放的。这就是我正在做的事情。

    mBitmap = Bitmap.createBitmap(640, 640, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
    mCanvas.scale(1.125f, 1.125f);

在布局xml中,画布设置为与父级及其父级匹配。

<view class="com.example.classes.SquareLayout"
    android:id="@+id/image_frame"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:background="#999999">

    <view class="com.example.classes.PhotoCanvas"
        android:id="@+id/photo_canvas"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true" />

</view>

(其父级的300dp更改为宽度所在:SquareLayout。

PhotoCanvas:

public PhotoCanvas (Context c, AttributeSet attrs) {
    super(c, attrs);
    this.c = c;
    mBitmapPaint = new Paint(Paint.DITHER_FLAG);

    mPaint = new Paint();
    mPaint.setAntiAlias(true);
    mPaint.setDither(true);
    cameraIcon = BitmapFactory.decodeResource(c.getResources(), R.drawable.ic_take_photo);

    try {
        mCallback = (OnAreaClickedListener) c;
    } catch (ClassCastException e) {
        throw new ClassCastException(c.toString() + " must implement OnHeadlineSelectedListener");
    }
}


@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    mBitmap = Bitmap.createBitmap(640, 640, Bitmap.Config.ARGB_8888);
    mCanvas = new Canvas(mBitmap);
    mCanvas.scale(1.125f, 1.125f);
    Log.i(Constants.TAG, "onSizeChanged");
}

@Override
protected void onDraw(Canvas canvas) {
    canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint);
    layoutDraw();

    Log.i(Constants.TAG, "onDraw");
}

我想要的是在以后的所有屏幕尺寸,密度和分辨率上创建一个总共640x640像素的图像。 有什么建议吗?

编辑:添加了xml

1 个答案:

答案 0 :(得分:0)

刚才意识到我做错了。画布的大小无关紧要。我将使它与每部手机匹配,然后当它的图片节省时间时,我只需将其缩放到所需的大小。