Android: матричная операция на ImageView, анимированная? - PullRequest
5 голосов
/ 06 июня 2011

Я использую матрицу для перевода / масштабирования ImageView, после того, как setImageMatrix, результат отображается напрямую, есть ли способ сделать его анимированным?

Спасибо!

Ответы [ 2 ]

1 голос
/ 22 апреля 2012

Увеличение было бы комбинацией и перевода, и масштаба:

// zooms in to the center of the screen
mZoomIn = new AnimationSet(true);

mTranslate = new TranslateAnimation(
                Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, -imageViewXCoord/(mScreenWidth/mImageViewWidth),
                Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, -imageViewYCoord/(mScreenWidth/mImageViewWidth)
            );
mTranslate.setDuration(200);

mScale = new ScaleAnimation(1, mScreenWidth/mImageViewWidth, 1, mScreenWidth/mImageViewWidth);
mScale.setDuration(200);

mZoomIn.addAnimation(mTranslate);
mZoomIn.addAnimation(mScale);
mZoomIn.setFillAfter(true);
mZoomIn.setFillEnabled(true);

mImageView.startAnimation(mZoomIn);

Уменьшение будет включать обратный интерполятор при увеличении, после чего вы можете вызвать startAnimation для вашего изображения в обычном режиме:

mZoomIn.setInterpolator(new ReverseInterpolator())
0 голосов
/ 22 апреля 2012

Вы можете попробовать использовать новую платформу анимации, представленную в Honeycomb, но я не знаю, будет ли это работать напрямую с матрицами изображений.Вы можете преобразовать преобразование, которое вы применяете с вашей матрицей, в элементарные преобразования анимации, такие как масштабирование, перевод, вращение, альфа.

Если вы ориентируетесь на устройства Android 2.x, вы можете использовать NineOldAndroids Джейка Уортона [1]который является бэкпортом новой анимационной платформы Honeycomb.Его очень просто использовать, поскольку он имитирует тот же API, который вы использовали бы на 11+ устройствах.

[1] http://nineoldandroids.com/

...