我有一个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
答案 0 :(得分:0)
刚才意识到我做错了。画布的大小无关紧要。我将使它与每部手机匹配,然后当它的图片节省时间时,我只需将其缩放到所需的大小。