我有一张正方形的帆布,是640x640 px。我希望这个画布匹配它的父版本,即720x720px。我试过缩放它,但是正方形的大小保持不变,但是内容被缩放了。这就是我要做的。
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>(其父级的300 in将更改为宽度在: 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 px。有什么建议吗?
编辑:添加xml
发布于 2013-11-22 12:57:08
我刚意识到我的方法不对。画布的大小并不重要。我会让它匹配每部手机,然后当它的图片节省时间,我只是缩放到所需的大小。
https://stackoverflow.com/questions/20143664
复制相似问题