У меня есть ImageView, который я вращаю, и я хотел бы, чтобы он снова масштабировался после завершения вращения. (Я бы предпочел плавный анимированный поворот, который масштабируется, когда он вращается, но это еще одна тема.) У меня такое чувство, что мне нужно сделать runnable для достижения этого, но я не могу заставить его работать правильно. Изображение имеет тот же размер, что и перед вращением.Установка изображения внутри ImageView после вращения
private void rotate() {
imageView.animate().rotationBy(90).setDuration(100).setInterpolator(new LinearInterpolator()).start();
imageView.post(new Runnable() {
@Override
public void run() {
fitImageView();
}
});
}
private void fitImageView() {
float imageWidth = imageView.getDrawable().getIntrinsicWidth();
float imageHeight = imageView.getDrawable().getIntrinsicHeight();
RectF drawableRect = new RectF(0, 0, imageWidth, imageHeight);
RectF viewRect = new RectF(0, 0, imageView.getWidth(), imageView.getHeight());
Matrix matrix = new Matrix();
matrix.setRectToRect(drawableRect, viewRect, Matrix.ScaleToFit.CENTER);
imageView.setImageMatrix(matrix);
imageView.invalidate();
}
fitImageView() отлично работает, чтобы поместить изображение, когда он первый инициализирован, и я подтвердил, из журнала, что fitImageView() вызывается когда-то во время поворота().
ваш fitimageview() работает нормально. Но он называется до полной анимации? – dipali
Думаю, что так. Трудно сказать, вызвано ли оно перед анимацией из журнала. – Mardymar