1
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);

这是我编写的代码(借用)。该图标是在列表视图内的图像视图中生成的。

我的问题是,在旋转这个“箭头”时,它似乎“剪掉”了远边缘的一部分,就好像它保持了原始位图的尺寸一样。我不知道如何让它“溢出”并呈现正确大小的图像。

有没有办法做到这一点?

4

2 回答 2

2

您将图像旋转 45 度,因此生成的位图应该是原始宽度加上原始对角线宽度(毕达哥拉斯定理应该能够提供帮助)。

AFAIK 在创建结果位图时您需要自己进行数学运算,因为这是正在绘制的画布,旋转它的内容不会旋转容器。

于 2013-04-12T15:54:36.757 回答
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在这里回答的。信用到期!

于 2013-05-09T15:29:41.383 回答