3

我使用以下链接中的 helop 围绕其中心旋转了一个刻度盘:

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);                  
    }

这只会导致图像围绕它自己的中心旋转,而不是围绕拨号器的中心点旋转。我不知道我错在哪里:(

更新

  1. 我基本上需要徽标在圆形路径中移动并成为可点击的视图。
  2. 尝试使用 rotateAnim 但视图没有动画,我无法获取 onclick 事件。
  3. 想要任何可以使用矩阵旋转相同的帮助
4

1 回答 1

2

尝试只旋转peopleOrg宽度和高度。

nMatrix.postRotate(degrees, peopleOrg.getWidth()/2, peopleOrg.getHeight()/2);

更新 :

既然您让我知道您的徽标应该是一个可点击的视图,那么将徽标图像与您的拨号器合并是不适用的。要围绕拨号器的中心旋转徽标视图,您实际上应该计算徽标视图的(顶部,左侧)点并移动它,而不仅仅是旋转它。

使用sinecosine函数获取假想圆圆周上的点以绘制徽标视图。

这篇文章将帮助您进行计算:如何计算圆周上的点?

于 2012-06-19T12:02:56.087 回答