bmpAndroidMarker = BitmapFactory.decodeResource(context.getResources(), R.drawable.t_move2);
bmpAndroidMarkerResult = Bitmap.createBitmap(bmpAndroidMarker.getWidth(), bmpAndroidMarker.getHeight(), Bitmap.Config.ARGB_8888);
Canvas tempCanvas = new Canvas(bmpAndroidMarkerResult);
tempCanvas.rotate(direction+45, bmpAndroidMarker.getWidth()/2, bmpAndroidMarker.getHeight()/2);
tempCanvas.drawBitmap(bmpAndroidMarker, 0, 0, null);
这是我编写的代码(借用)。该图标是在列表视图内的图像视图中生成的。
我的问题是,在旋转这个'箭头'时,似乎它'剪辑'远边的一部分,好像它保持了原始位图的尺寸。我无法弄清楚如何让它“溢出”并渲染正确尺寸的图像。
有没有办法做到这一点?
答案 0 :(得分:2)
你正在将图像旋转45度,因此结果位图应该是原始宽度加上原始对角线宽度(毕达哥拉斯定理应该能够帮助)。
AFAIK你需要在创建结果Bitmap时自己做数学,因为它是正在绘制的画布,旋转它的内容不会旋转容器。
答案 1 :(得分:0)
尝试将ImageView包装在FrameLayout中,并将框架布局的宽度和高度设置为您尝试渲染的图像的大小。您可以在视图的布局文件中执行此操作,如...
<FrameLayout
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_width="YOUR IMAGE WIDTH"
android:layout_height="YOUR IMAGE HEIGHT">
<ImageView
android:scaleType="matrix"
android:layout_width="YOUR IMAGE WIDTH"
android:layout_height="YOUR IMAGE HEIGHT"
android:src="@drawable/YOUR IMAGE FILE" />
</FrameLayout>
...或者以编程方式构建具有指定尺寸的FrameLayout,然后将ImageView添加为子视图。
如果您的图片比屏幕大,您可以使用android:scaleType =“matrix”来防止缩放,并确保保留纵横比。
最初由Pavlo Viazovskyy here回答。信用到期的信用额度!