Android-在安卓开发中,如何实现一个简单的图片旋转

Android-在安卓开发中,如何实现一个简单的图片旋转

想挽留 发布于 2017-05-13 字数 65 浏览 1375 回复 3

在安卓开发中,如何实现一个简单的图片旋转,求代码,求真相!

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晚风撩人 2017-10-04 3 楼

有两种方法:
1.使用动画,需要在“resanim”目录下创建xml文件,示例代码如下:

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1500"
android:fromDegrees="0.0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:toDegrees="360.0" />

2.使用Matrix矩阵旋转,示例代码如下:

Matrix matrix = new Matrix();
matrix.setRotate(float degrees, float px, float py);
canvas.drawBitmap(bitmap, matrix, null);

清晨说ぺ晚安 2017-08-24 2 楼

要实现图片旋转并不难,基本原理就是,先把图片绘制在一个 bitmap ,对 bitmap 旋转,再保存成图片就可以了。
源码实例:android 图片旋转

夜无邪 2017-08-08 1 楼

图像的旋转有很多方法,除了常见的使用动画和矩阵,还可以通过操作背景画布本身来旋转
现将正常的图像绘制到画布中,保存一次画布后整体旋转,然后再恢复画布,此时的图像便得到了旋转的效果,google 官方也推荐使用这种方式来旋转图像,效率也高于矩阵旋转,而且相比之下,画布的旋转不容易失真,这一点是非常重要的。

附上实例代码:

 // [Neo] 将需要的图像绘制到画布上面
canvas.drawBitmap(picture, 0, 0, null);
// [Neo] 保存一下当前画布,很重要哦
canvas.save();
// [Neo] 旋转 angle 度,起始座标为 0, 0
canvas.rotato(angle, 0, 0);
// [Neo] TODO 做些你需要的其他操作
// ...
// [Neo] 恢复画布
canvas.restore();

若不是在派生的 View 类重写的 onDraw 方法来修改画布的话,其实还可以通过代码直接绘制一个bitmap对象,可参考:

 // [Neo] 创建一个空白的 Bitmap,需要指定长和宽哦
Bitmap bitmap = Bitmap.createBitmap(width, height,
rawable.getOpacity() != PixelFormat.OPAQUE ?
Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);

// [Neo] 直接拿上面的 Bitmap 作为画布的原材料
Canvas canvas = new Canvas(bitmap);
// [Neo] 然后在画布上面绘制你需要的东东,如果需要旋转,可套用上面的方法
// [Neo] ...

// [Neo] 最后拿着 bitmap 去填充控件就是啦,比如 ImageView
imageView.setImageBitmap(bitmap);

祝好,
斑驳敬上