У меня есть решение этого. На самом деле это решение проблемы, которая возникает после поворота (прямоугольное изображение не подходит для ImagView), но оно также охватывает и вашу проблему. Хотя в этом решении есть анимация к лучшему или к худшему
int h,w;
Boolean safe=true;
Получение параметров imageView невозможно при инициализации действия. Для этого, пожалуйста, обратитесь к этому решению
ИЛИ установите размеры при нажатии кнопки, например
rotateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(imageView.getRotation()/90%2==0){
h=imageView.getHeight();
w=imageView.getWidth();
}
.
.//Insert the code Snippet below here
}
И код для запуска, когда мы хотим повернуть ImageView
if(safe)
imageView.animate().rotationBy(90).scaleX(imageView.getRotation()/90%2==0?(w*1.0f/h):1).scaleY(imageView.getRotation()/90%2==0?(w*1.0f/h):1).setDuration(2000).setInterpolator(new LinearInterpolator()).setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
safe=false;
}
@Override
public void onAnimationEnd(Animator animation) {
safe=true;
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
}).start();
}
});
Этого решения достаточно для указанной выше Задачи. Хотя оно уменьшит изображение, даже если в этом нет необходимости (если высота меньше, чем Ширина). Если это вас беспокоит, вы можете добавить еще один троичный оператор внутри scaleX / scaleY.