В андроиде, как сделать изображение расти с одной точки с помощью анимации?
В андроиде, как сделать изображение расти с одной точки с помощью анимации?
Я хочу сказать... у меня есть кнопка.. и я хочу, когда я нажимаю на эту кнопку, мое изображение должно расти (по возрастанию), чтобы становиться все больше и больше с этой точки... и когда снова я нажмите на эту кнопку снова, она должна свернуть все меньше и меньше, чтобы закончиться в этот момент
Может ли кто-нибудь помочь мне в этом, используя андроидную анимацию?
Я новичок в 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>