Масштаб ImageView + анимация перевода

Я пытаюсь создать довольно сложную анимацию: у меня есть сжатое изображение внутри ScrollView, и когда я нажимаю на него, я хотел бы, чтобы оно масштабировалось до его реальных X и Y +, чтобы в конечном итоге оказаться на вершине ScollView и по центру экрана.

Итак, первый вопрос: есть ли способ установить масштабную анимацию с началом и концом и высотой в dp?

И второй вопрос: есть ли способ установить анимацию перевода с начальным и конечным представлением контейнера?


person thomaus    schedule 09.07.2012    source источник


Ответы (1)


Анимации обычно используют параметры размера пикселя, но вы можете легко преобразовать dp в пиксели с помощью статического метода:

public static int dpToPixels(Context context, float dp) {
    final float scale = context.getResources().getDisplayMetrics().density;
    return (int) (dp * scale + 0.5f);
}

Что касается вашего второго вопроса, я не думаю, что анимация может выйти за рамки своего первоначального вида.

person smora    schedule 09.07.2012
comment
Действительно, не будет. Если ваш ImageView является подвидом ScrollView, анимация его в исходную точку (0,0) поместит его в верхний левый угол ScrollView, а не на весь экран. Но он сказал, что хочет анимировать его в верхней части ScrollView, так что это не должно быть проблемой. - person Norbert Bicsi; 09.07.2012
comment
В масштабной анимации, как вы можете установить начальную и конечную ширину и высоту. Я не нашел этого в документации. - person thomaus; 09.07.2012
comment
Вы можете использовать конструктор и сводные значения: public ScaleAnimation (с плавающей запятой от X, с плавающей запятой до X, с плавающей запятой от Y, с плавающей запятой до Y, int pivotXType, с плавающей точкой pivotXValue, int pivotYType, с плавающей точкой pivotYValue) - person smora; 09.07.2012
comment
Я знаю, но вы можете использовать ширину и высоту? Мне нужно масштабировать изображение от уменьшенного начального состояния до исходной ширины и высоты. - person thomaus; 10.07.2012
comment
Параметры fromX и toX являются значением шкалы. Таким образом, вам нужно установить 0.0f для fromX и fromY и 1.0f для toX и toY, и ваша анимация будет иметь исходную ширину и высоту. - person smora; 10.07.2012