В андроиде, как сделать изображение расти с одной точки с помощью анимации?

В андроиде, как сделать изображение расти с одной точки с помощью анимации?

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

Может ли кто-нибудь помочь мне в этом, используя андроидную анимацию? Я новичок в android

Ответ 1

Это может быть достигнуто с помощью утилиты View Animation. Это масштабирует изображение с 100% до 140% в течение 1 секунды

Поместите следующий файл в res/anim/scale.xml

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

Код Java

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final View view = findViewById(R.id.imageView1);

    final Animation anim = AnimationUtils.loadAnimation(this, R.anim.scale);

    Button button = (Button) findViewById(R.id.button1);
    button.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v) {   
            view.startAnimation(anim);
        }
    });
}

Ответ 2

Я бы предложил вам посмотреть эту публикацию SO: Android: развернуть/свернуть анимацию

public class DropDownAnim extends Animation {
int targetHeight;
View view;
boolean down;

public DropDownAnim(View view, int targetHeight, boolean down) {
    this.view = view;
    this.targetHeight = targetHeight;
    this.down = down;
}

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
    int newHeight;
    if (down) {
        newHeight = (int) (targetHeight * interpolatedTime);
    } else {
        newHeight = (int) (targetHeight * (1 - interpolatedTime));
    }
    view.getLayoutParams().height = newHeight;
    view.requestLayout();
}

@Override
public void initialize(int width, int height, int parentWidth,
        int parentHeight) {
    super.initialize(width, height, parentWidth, parentHeight);
}

@Override
public boolean willChangeBounds() {
    return true;
}
}

Вам нужно будет использовать это как пример, который вы хотите применить к своей кнопке.

Ответ 3

Вы можете найти ответ Rajdeep Dua, и если вы хотите сохранить увеличенное изображение, пока не назовете clearAnimation() анимацию android:fillAfter="true" в xml, например

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