在android中如何使用动画从一个点增长图像?
我的意思是说...我有一个按钮..我想要的是当我点击那个按钮时我的图像必须增长(升序)从那一点变得越来越大......然后我再次再次单击该按钮,它必须折叠越来越小,以此结束
任何人都可以帮助我使用Android动画吗? 我是android的新手
答案 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();
}
});