Java ImageView中的旋转图像
我想用方向传感器和当前GPS位置显示一个箭头,指示朝向目标的方向。一切正常,除了我想在ImageView中旋转箭头图像 显示向上箭头的当前代码如下:Java ImageView中的旋转图像,java,android,Java,Android,我想用方向传感器和当前GPS位置显示一个箭头,指示朝向目标的方向。一切正常,除了我想在ImageView中旋转箭头图像 显示向上箭头的当前代码如下: ImageViewArrow.setImageResource(R.drawable.arrow); 显示旋转N度的箭头的最佳解决方案是什么 我试过这个,但它给出了混乱的图形: Matrix matrix = new Matrix(); matrix.postRotate(Rotation); Bitmap bitmapOrg = Bitmap
ImageViewArrow.setImageResource(R.drawable.arrow);
显示旋转N度的箭头的最佳解决方案是什么
我试过这个,但它给出了混乱的图形:
Matrix matrix = new Matrix();
matrix.postRotate(Rotation);
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
R.drawable.arrow);
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
bitmapOrg.getWidth(),bitmapOrg.getHeight(), matrix, true);
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);
InfoArrow.setScaleType(ScaleType.CENTER);
InfoArrow.setImageDrawable(bmd);
在这里你可以找到一个教程
createBitmap方法中有一个矩阵参数,可用于调整图像大小和旋转图像。您可以尝试以下方法:
Matrix matrix = new Matrix();
// to rotate the image bitmap use post Rotate
matrix.postRotate(45);
Bitmap rotatedImage = Bitmap.createBitmap(bitmapOrg, 0, 0,
width, height, matrix, true); `
我在发帖之前就试过了,但结果不对。然而,这实际上就是解决方案——我只需要删除InfoArrow.setScaleType(ScaleType.CENTER);,那么它看起来是对的。对于不断更新的东西来说,这是非常低效的。对于这种情况,您真的应该编写一个自定义视图来绘制所需的内容。没有必要像这样滥用ImageView这样的标准类;编写绘制位图(并在绘制位图之前应用旋转)的自定义视图非常简单。