Android UI之ImageView旋转的几种方式

来源:互联网 发布:软件导刊 核心期刊 编辑:程序博客网 时间:2024/04/30 14:18

我整理了一下,大概有四种,亲测成功三种。

第一种,效率较低,不过看许多博客都使用这种方法,即旋转bitmap:

Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ic_launcher)).getBitmap();Matrix matrix  = new Matrix();matrix.setRotate(90);Bitmap new = Bitmap.create(bitmap,0,bitmap.getWidth(),0,bitmap.getHeight(),matrix);image.setBitmapResource(bitmap);

如果程序不断获取新的bitmap重新设置给ImageView的话,那么bitmap在不断旋转,又不回收内存,浪费大大哒,不推荐使用。


第二种,使用ImageView自带的旋转方法

可以通过在xml中设置ImageView的属性来实现,如

android:rotation="90"
,这样。

动态调用如下:

image.setPivotX(image.getWidth()/2);image.setPivotY(image.getHeight()/2);//支点在图片中心image.setRotation(90);


第三种,使用旋转动画

可以使用ImageView配合属性动画实现,如
rotateImage.animate().rotation(90);
或者普通动画
Animation rotateAnimation  = new RotateAnimation(lastAngle, progress, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 1);                rotateAnimation.setFillAfter(true);                rotateAnimation.setDuration(50);                rotateAnimation.setRepeatCount(0);                rotateAnimation.setInterpolator(new LinearInterpolator());                rotateImage.startAnimation(rotateAnimation);


第四种,其他博客看到的,未测试!

Matrix matrix=new Matrix();                rotateImage.setScaleType(ScaleType.MATRIX);   //required                matrix.postRotate((float) progress, pivotX, pivotY);                rotateImage.setImageMatrix(matrix);

 

0 0
原创粉丝点击