在android中如何使用动画从一个点增长图像?

时间:2012-01-02 04:36:31

标签: android animation

在android中如何使用动画从一个点增长图像?

我的意思是说...我有一个按钮..我想要的是当我点击那个按钮时我的图像必须增长(升序)从那一点变得越来越大......然后我再次再次单击该按钮,它必须折叠越来越小,以此结束

任何人都可以帮助我使用Android动画吗? 我是android的新手

3 个答案:

答案 0 :(得分:38)

这可以使用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);
        }
    });
}

答案 1 :(得分:3)

我建议你看看这篇SO帖子: Android: Expand/collapse animation

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;
}
}

您必须将其用作示例,因为您要将其应用于按钮。

答案 2 :(得分:1)

  

从Android 3.0开始,动画视图的首选方式是   使用android.animation包API。这些基于Animator的类更改了View对象的实际属性,....

或者您可以使用ViewPropertyAnimator来处理简单的事情 - 一个图像按钮,其长度超过1000毫秒到1.4倍:

imageButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        imageButton.animate().
        scaleX(1.4f).
        scaleY(1.4f).
        setDuration(1000).start();
    }
});