8

我正在开发一个游戏,用户需要点击 ImageView 中的图像来旋转它。在每个点击图像顺时针方向旋转 90 度。但是图像从旧位置旋转到新位置需要时间。这阻碍了游戏体验。我使用了以下内容:

protected void onCreate(Bundle savedInstanceState)
{  
... 
...  
    imgview = (ImageView)findViewById(R.id.imageView1);  
    imgview.setOnClickListener(new OnClickListener() {
         @Override 
         public void onClick(View arg0) {
              Matrix matrix = new Matrix();
              matrix.postRotate(90); 
              Bitmap myImg = getBitmapFromDrawable(imgview.getDrawable());
              Bitmap rotated = Bitmap.createBitmap(myImg,0,0,myImg.getWidth(),myImg.getHeight(),matrix,true);
              imgview.setImageBitmap(rotated);
         }
});

我想知道是否有任何其他方法可以旋转图像 而不会产生任何旋转延迟

4

4 回答 4

36

我也尝试过一次,除了使用动画之外找不到任何其他解决方案。在这里我会怎么做。

private void rotate(float degree) {
    final RotateAnimation rotateAnim = new RotateAnimation(0.0f, degree,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f,
            RotateAnimation.RELATIVE_TO_SELF, 0.5f);

    rotateAnim.setDuration(0);
    rotateAnim.setFillAfter(true);
    imgview.startAnimation(rotateAnim);
}
于 2013-09-11T07:57:22.933 回答
17

您不需要旋转对象,旋转视图就足够了。如果您的目标是 API>=11,您可以随时执行此操作。

mImageView.setRotation(angle);

干杯。

于 2014-11-06T12:50:04.153 回答
5

短方法

View.animate().rotation(90).setDuration(0);

于 2017-04-24T20:58:36.057 回答
-3

您是否尝试使用自定义视图扩展 imageview 并在后台线程中旋转图像?

于 2013-09-11T07:45:45.173 回答