我正在尝试在 RemoteViews 中旋转位图。但是,当我使用任何一个 Matrix.setRotate 方法或任何一个 Matrix.postRotate 方法时,位图都会变得奇怪。这是我用来完成任务的代码。
Bitmap bMap = BitmapFactory.decodeResource(context.getResources(), R.drawable.arrow);
Matrix m = new Matrix();
m.setRotate((float) 0, bMap.getWidth()/2, bMap.getHeight()/2);
bMap = Bitmap.createBitmap(bMap,0,0, bMap.getWidth(),bMap.getHeight(),m, true);
RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.speedometer);
remoteView.setImageViewBitmap(R.id.speedoNeedle, bMap);
这是原始布局文件xml:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="136px"
android:layout_height="136px"
>
<ImageView
android:layout_width="136px"
android:layout_height="136px"
android:src="@drawable/dial"
/>
<ImageView
android:id="@+id/speedoNeedle"
android:layout_width="9px"
android:layout_height="78px"
android:layout_marginLeft="63px"
android:layout_marginTop="27px"
android:rotation="-138"
android:src="@drawable/arrow" />
</RelativeLayout>
如果我将旋转值设置为零或注释掉m.setRotate((float) 0, bMap.getWidth()/2, bMap.getHeight()/2)位图正确显示。
如果我将旋转值设置为 138,我会得到:你几乎看不到针。
这是 184 的值的屏幕截图:
在最大值 276 时甚至看不到针。
我究竟做错了什么?我该如何解决?
提前致谢。