我想基于用户点击10度旋转位图图像.在众多stackoverflow和谷歌答案之后,我尝试了Matrix旋转的各种组合.
然而,图像并没有像预期的那样真正旋转,并且给出了关于画布中心的旋转+振荡的抖动视图.为了测试,每次调用对象的绘制方法时,我都会将旋转角度增加10度(而不是点击次数).图像是一个对称的圆形[64x64包围矩形],我希望它在屏幕中心围绕它自己的中心像一个轮子一样旋转,但它会旋转并沿着对角线向右下方移动并以振荡方式向后移动到屏幕中心.
public void draw(Canvas canvas) {
Matrix matrix = new Matrix();
rotation += 10;
float px = this.viewWidth/2;
float py = this.viewHeight/2;
matrix.setRotate(rotation, bitmap.getWidth()/2, bitmap.getHeight()/2);
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, getImgWidth(), getImgHeight(), matrix, true);
canvas.drawBitmap(newbmp, px - (getImgWidth()/2), py - (getImgHeight()/2), null);
}
Run Code Online (Sandbox Code Playgroud) 我在xml中声明了几个整数值,需要使用Class中的值来定义对象的数组大小.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Default Object Count -->
<item format="integer" name="item1" type="integer">3</item>
<item format="integer" name="item2" type="integer">1</item>
<item format="integer" name="item3" type="integer">1</item>
</resources>
Run Code Online (Sandbox Code Playgroud)
我在课堂上使用上面的值如下
public class InitialiseObjects {
// For now static number of objects initialized
private String TAG = "INIT_OBJECTS";
int ITEM1_COUNT = R.integer.item1;
int ITEM2_COUNT = R.integer.item2;
int ITEM3_COUNT = R.integer.item3;
private Item1[] item1Objs = new Item1[ITEM1_COUNT];
private Item2[] item2Objs = new Item2[ITEM2_COUNT];
private Item3[] item3Objs = new Item3[ITEM3_COUNT];
}
Run Code Online (Sandbox Code Playgroud)
对于1,2,3项,我预计ITEM*_COUNT分别为3,1,1.但是我分别得到2131034112,2131034113,2131034114
这有什么不对?
正在使用Android 2.2 [API-8]