Intereting Posts
Android ScrollView и кнопки внизу экрана Как отключить прокрутку ScrollView? Действие расписания Android Как определить, воспроизводится ли VideoView видео или буферизация? Android Studio, не отображающая тег SigninButton <item>, требует атрибута «android: color» Получение DTMF в Android Как проверить доступ к Интернету в настоящее время или нет в Android Android: Как GridView auto_fit находит количество столбцов? Как отображать всплывающее окно или диалог, когда телефон заблокирован? Загрузка нескольких видео AdMob Публикация необработанных данных изображения вместо URL-адреса с помощью Android Facebook SDK Служба резервного копирования Android – когда и как часто делать резервную копию? Закрытие сокета при завершении приложения SetOrientationHint вращает видео против часовой стрелки на некоторых фронтальных камерах телефонов (HTC) Как некоторые приложения для Android становятся больше, чем рекомендуемые значки?

Как программно анимировать ImageView

Я пытаюсь анимировать ImageView при щелчке по указанному изображению.

В частности, я хочу, чтобы размер ImageView стал больше (скажем, 20 больше) и сразу уменьшился до первоначального размера).

Пока я экспериментировал с этим кодом без везения.

// thumbLike is the imageView i would like to animate. button.setOnClickListener(new OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 2.5f, 1.0f, 2.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); scaleAnim.setInterpolator(new LinearInterpolator()); scaleAnim.setDuration(1500); thumbLike.startAnimation(scaleAnim); thumbLike.setAnimation(null); } }); 

Может ли кто-нибудь предложить мне возможное решение?

Редактировать # 1

Он работает через XML, как ответил Hardik4560:

 // finally i use this code to execute the animation Animation animationScaleUp = AnimationUtils.loadAnimation(this, R.anim.scale_up); Animation animationScaleDown = AnimationUtils.loadAnimation(this, R.anim.scale_down); AnimationSet growShrink = new AnimationSet(true); growShrink.addAnimation(animationScaleUp); growShrink.addAnimation(animationScaleDown); thumbLike.startAnimation(growShrink); 

И XML

 SCALE_UP <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <scale android:fromXScale="1.0" android:toXScale="1.5" android:fromYScale="1.0" android:toYScale="1.5" android:pivotX="50%" android:pivotY="50%" android:duration="1000" /> </set> SCALE_DOWN <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/linear_interpolator"> <scale android:fromXScale="1.5" android:toXScale="1.0" android:fromYScale="1.5" android:toYScale="1.0" android:pivotX="50%" android:pivotY="50%" android:duration="1000" /> </set> 

Ps: это неудобно, так как я уже принял ответ. Я пытаюсь объединить ответы @tharkbad и @ Hardik4560, но теперь он не выглядит гладко.

Во время анимации scale_up это похоже на «пропустить» до конца анимации, а затем сразу же запустить анимацию scale_down. Думаю, мне нужно немного поиграть с ним.

Solutions Collecting From Web of "Как программно анимировать ImageView"

Я использую это для достижения эффекта popin popout,

Посмотрите, может ли он вас использовать

Выскочить.

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/bounce_interpolator" > <scale android:pivotX="50%" android:pivotY="50%" android:fromXScale="0.5" android:fromYScale="0.5" android:toXScale="1.0" android:toYScale="1.0" android:duration="500" /> </set> 

Поп в

 <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/bounce_interpolator" > <scale android:pivotX="50%" android:pivotY="50%" android:fromXScale="1.0" android:fromYScale="1.0" android:toXScale="0.0" android:toYScale="0.0" android:duration="500" /> </set> 

Если вы хотите реализовать это без XML, вы можете сделать это следующим образом

 final float growTo = 1.2f; final long duration = 1200; ScaleAnimation grow = new ScaleAnimation(1, growTo, 1, growTo, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); grow.setDuration(duration / 2); ScaleAnimation shrink = new ScaleAnimation(growTo, 1, growTo, 1, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); shrink.setDuration(duration / 2); shrink.setStartOffset(duration / 2); AnimationSet growAndShrink = new AnimationSet(true); growAndShrink.setInterpolator(new LinearInterpolator()); growAndShrink.addAnimation(grow); growAndShrink.addAnimation(shrink); thumbLike.startAnimation(growAndShrink); 

Конечно, вы также можете использовать NineOldAndroids и использовать новые методы анимации.

Я думаю, что ваша исходная ошибка – это строка, она удаляет только что запущенную анимацию из представления.

 thumbLike.setAnimation(null);