onDraw方法里让图片旋转起来
时间: 2024-03-05 12:54:08 浏览: 16
要让图片在onDraw方法里旋转起来,可以使用Canvas的旋转方法rotate()。具体实现步骤如下:
1.在onDraw方法中获取当前的Canvas对象:Canvas canvas = holder.lockCanvas();
2.计算旋转的角度,可以使用一个变量来记录旋转的角度,每次在onDraw方法中更新角度即可。
3.使用Canvas的rotate()方法旋转画布。例如,如果要让图片绕中心点旋转,可以先将画布平移至中心点,再进行旋转,最后再将画布平移回原来的位置:
```
// 将画布平移至中心点
canvas.translate(getWidth() / 2, getHeight() / 2);
// 旋转画布
canvas.rotate(angle);
// 将画布平移回原来的位置
canvas.translate(-getWidth() / 2, -getHeight() / 2);
```
4.绘制图片。需要注意的是,旋转后的图片坐标需要重新计算,可以使用Matrix来实现。例如:
```
Matrix matrix = new Matrix();
matrix.postRotate(angle, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
matrix.postTranslate(x, y);
canvas.drawBitmap(bitmap, matrix, paint);
```
其中,angle为旋转的角度,bitmap为要绘制的图片,x和y为图片的坐标,paint为绘制图片的画笔。
5.更新旋转角度。可以在onDraw方法中更新旋转角度,例如:
```
angle += 1;
```
完整的实现代码如下:
```
public void onDraw(Canvas canvas) {
// 计算旋转角度
angle += 1;
// 将画布平移至中心点
canvas.translate(getWidth() / 2, getHeight() / 2);
// 旋转画布
canvas.rotate(angle);
// 将画布平移回原来的位置
canvas.translate(-getWidth() / 2, -getHeight() / 2);
// 绘制图片
Matrix matrix = new Matrix();
matrix.postRotate(angle, bitmap.getWidth() / 2, bitmap.getHeight() / 2);
matrix.postTranslate(x, y);
canvas.drawBitmap(bitmap, matrix, paint);
}
```