我尝试将imageView旋转到位,而不是在中间。我使用的是RotateAnimation,这是我的代码:
int x = imageView.getLeft();
int y = imageView.getTop();
Animation rotate = new RotateAnimation((float) 0, (float) 359, (float) x, (float) y);
imageView.setAnimation(rotate);
当我这样做时,imageView不会旋转到位,而是围绕屏幕上的枢轴点旋转。但是,当我在调试模式下运行它时,x和y等于300和352,这似乎是正确的。有人可以解释为什么imageView围绕其他枢轴点旋转而不是我为它设置的那个吗?
答案 0 :(得分:2)
在anim文件夹中创建rotate.xml
文件并使用以下代码
<?xml version="1.0" encoding="UTF-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1600"
android:fromDegrees="0"
android:interpolator="@android:anim/linear_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="infinite"
android:toDegrees="358" />
和活动
myImage.startAnimation(AnimationUtils.loadAnimation(MainActivity.this,
R.anim.rotate));
答案 1 :(得分:0)
试试这个
public static android.graphics.BitmapFactory.Options getSize(Context c, int resId){
android.graphics.BitmapFactory.Options o = new android.graphics.BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeResource(c.getResources(), resId, o);
return o;
}
这将返回一个包含实际宽度和高度的Options对象。从活动中你可以像这样使用它:
ImageView img = (ImageView)findViewById(R.id.yourImageViewId);
Options o = getSize(this, R.drawable.yourImage);
Matrix m = new Matrix();
m.postRotate(angle, o.outWidth/2, o.outHeight/2);
img.setScaleType(ScaleType.MATRIX);
img.setImageMatrix(m);