Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ImageView中的旋转图像_Java_Android - Fatal编程技术网

Java 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

我想用方向传感器和当前GPS位置显示一个箭头,指示朝向目标的方向。一切正常,除了我想在ImageView中旋转箭头图像

显示向上箭头的当前代码如下:

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这样的标准类;编写绘制位图(并在绘制位图之前应用旋转)的自定义视图非常简单。