使用Seekbar以一定角度旋转imageView

时间:2015-03-17 07:49:06

标签: java android android-animation android-custom-view

我只想转动an image from min to max。但为此,我使用多个图像来显示进度。有人可以建议我使用单个图像的方法。它可以从最小角度旋转到最大角度

我知道有两种可能的方法来实现它。

  1. 使用动画类
  2. 自定义视图
  3. enter image description here

    我只想使用SeekBar以任意数量的步骤旋转此图像

    我怎样才能实现这个目标?

    漫游图片

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

    第二种方法

    imageView.setRotation(angle); // but requires API >= 11
    

    我可以使用Matrix

    Matrix matrix = new Matrix();
    imageView.setScaleType(ScaleType.MATRIX);   //required
    matrix.postRotate((float) angle, pivX, pivY);
    imageView.setImageMatrix(matrix);
    

    我如何分别将开始和结束角度设置为SeekBar min和max 。哪种方法更好,我是否必须将其放在FrameLayout中以使其rotate freely

3 个答案:

答案 0 :(得分:2)

你可以这样做:

// load the origial BitMap (500 x 500 px)
Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
       R.drawable.android);

int width = bitmapOrg.width();
int height = bitmapOrg.height();

// createa matrix for the manipulation
Matrix matrix = new Matrix();

// rotate the Bitmap
matrix.postRotate(45);

// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width, height, matrix, true);

// make a Drawable from Bitmap to allow to set the BitMap
// to the ImageView, ImageButton or what ever
BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

// set the Drawable on the ImageView
imageView.setImageDrawable(bmd);

详情请查看。

http://www.anddev.org/resize_and_rotate_image_-_example-t621.html

matrix.postRotate(45);  //here 45 is the degree of angle to rotate

答案 1 :(得分:0)

您可以按建议使用矩阵here

Matrix matrix = new Matrix();
imageView.setScaleType(ScaleType.MATRIX);   //required
matrix.postRotate((float) angle, pivX, pivY);
imageView.setImageMatrix(matrix);

答案 2 :(得分:0)

这将是一个无限旋转,但你可以根据需要旋转它。 这个视图无限旋转360度。

        final RotateAnimation R = new RotateAnimation(0, 360, view.getWidth() / 2.0f, view.getHeight() / 2.0f);
            R.setRepeatCount(Animation.INFINITE);
            R.setDuration(800);
            view.startAnimation(R);