0

我基本上试图实现类似于this的东西。不幸的是,这是一个iOS教程。沿着圆形路径旋转图标/视图,滚动 - Android

我已经搜索了大多数可能的关键字以循环方式移动某些东西,但找不到任何开始。 atleast中的任何人都可以提供有关如何在Android上黑客入侵的提示吗?请。

谢谢。

回答

1

这在自定义控件中很容易实现。只需创建一个扩展View并重写draw()方法的类。然后,您可以聆听触摸并计算用户旋转控制的距离。然后,您只需使用该数据旋转画布并在其上绘制数字即可。

- = Update = - 当您重写draw方法时,您将获得一个Canvas对象。这个对象可以让你画出你想要的东西。它看起来像这样:

@Override 
public void draw(Canvas c) 
{ 
    c.rotate(amount); 
    c.drawBitmap(myImage); 
} 

这是一个链接到完整Canvas Documentation

+0

感谢您的答复,问题是旋转部分。我如何使一个图标/图像按钮(在我的情况下)在圆形路径中旋转,类似于在滚动视图上上下滚动的效果。我现在几乎在学习android,请你给我更多的解释。 – Wesley

+0

已更新的答案。 – CaseyB

2

我用旋转动画来旋转一个点的图像。

double r = Math.atan2(evt.getX() - turntable.getWidth()/2, turntable.getHeight()/2 - evt.getY()); 
    rotation = (int) Math.toDegrees(r); 

    if (evt.getAction() == MotionEvent.ACTION_MOVE) 
     { 
       x= (int)evt.getX(); 
       y = (int)evt.getY(); 
        rotateAnim = new RotateAnimation(angle,rotation-50,200,100); 
        rotateAnim.setFillAfter(true); 
        ImageView.setanimation(rotateAnim); 
        ImageView.startAnimation(rotateAnim); 
      } 

你也可以用矩阵

float newRot = new Float(rot); 

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.disc); 

    Matrix matrix = new Matrix(); 
    matrix.postRotate(newRot - 50); 

    Bitmap redrawnBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); 
    turntable.setImageBitmap(redrawnBitmap);