我已使用以下链接中的旋钮绕其中心旋转了一个表盘:
http://mobile.tutsplus.com/tutorials/android/android-sdk-creating-a-rotating-dialer/
现在我在拨号器旁边有一个图标,我需要围绕拨号器旋转它,以及拨号器在圆形路径中旋转。
private void rotateLogo(float degrees){
Matrix nMatrix = new Matrix();
Bitmap peopleOrg = BitmapFactory.decodeResource(getResources(), R.drawable.peoplelogo);
float translateX = dialerWidth / 2 - dialerWidth / 2;
float translateY = dialerHeight / 2 - dialerWidth / 2;
nMatrix.preTranslate(-turntable.getWidth()/2, -turntable.getHeight()/2);
nMatrix.postRotate(degrees, translateX, translateY);
nMatrix.postTranslate(turntable.getWidth()/2, turntable.getHeight()/2);
Bitmap peopleScale = Bitmap.createBitmap(peopleOrg, 0, 0, peopleOrg.getWidth(), peopleOrg.getHeight(), nMatrix, true);
peopleLogo.setImageBitmap(peopleScale);
peopleLogo.setImageMatrix(nMatrix);
}
这只会使图像围绕其自身的中心旋转,而不是围绕拨号器的中心点旋转。 我无法找出错误的地方:(
答案 0 :(得分:2)
请尝试仅使用peopleOrg
宽度和高度旋转。
nMatrix.postRotate(degrees, peopleOrg.getWidth()/2, peopleOrg.getHeight()/2);
现在您告诉我您的徽标应该是可点击的视图,将徽标图像与拨号器合并不适用。要围绕拨号器中心旋转徽标视图,您应该实际计算徽标视图的(顶部,左侧)点并移动它,而不仅仅是旋转它。
使用sine
和cosine
函数获取虚拟圆周上的点,以绘制徽标视图。
这篇文章将帮助您进行计算:How do I calculate a point on a circle’s circumference?