Android:随着时间增长/缩小View

|| 我有这样的视图布局:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<RelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"
    android:orientation=\"vertical\" android:layout_width=\"fill_parent\"
    android:layout_height=\"fill_parent\" android:background=\"@color/light_gray\"
    android:padding=\"5dip\">

    <View android:id=\"@+id/fixedSpace\" android:layout_width=\"fill_parent\"
        android:layout_height=\"50dip\" android:background=\"@color/aqua\"
        android:layout_alignParentBottom=\"true\" android:clickable=\"true\"
        android:onClick=\"onClickStartAnimation\" />

    <View android:id=\"@+id/dynamicSpace\" android:layout_width=\"fill_parent\"
        android:layout_height=\"200dip\" android:background=\"@color/lime\"
        android:layout_above=\"@id/fixedSpace\" />


    <View android:id=\"@+id/remainingSpace\" android:layout_width=\"fill_parent\"
        android:layout_height=\"fill_parent\" android:background=\"@color/pink\"
        android:layout_alignParentTop=\"true\" android:layout_above=\"@id/dynamicSpace\" />


</RelativeLayout>
我要实现的基本上是在时间t内ѭ1的增长/收缩行为。使用动画,我可以产生以下内容: t = 1: t = 2: t = 3: 但是,这并没有真正调整我的视图的大小,特别是
dynamicSpace
remainingSpace
。它只是对“ 1”视图的移动进行了动画处理。但是“容器”视图从一开始就已经占据了空间。 正确的是,the1ѭ以0px开头,粉
remainingSpace
以粉色开头,因此两者之间没有灰色空间。     
已邀请:
        缩放视图 既然您说您正在做一段时间t,这听起来最好是
LinearInterpolator
。     
        编辑: 我尝试用AsyncTask线程替换下面的内容,它更加平滑。我认为关键是我让线程在后台运行,并在需要调整大小时使用它,从而减少了开销 创建一个自定义的AnimationListener并将用于调整视图大小的代码放在onAnimationRepeat方法中。 然后制作一个虚拟动画,并将动画的重复次数设置为无限。视图达到最终大小后,将动画的重复计数设置为零(同样在onAnimationRepeat中):
class ResizeAnimationListener implements AnimationListener{

int finalHeight; // max Height
int resizeAmount; // amount to resize each time
View view; // view to resize

public ResizeAnimationListener(int finalHeight; View view, int resizeAmount) {
    super();
    finalHeight; = finalHeight; 
    this.resizeAmount = resizeAmount;
    this.view = view;

}

@Override
public void onAnimationEnd(Animation animation) {

}

@Override
public void onAnimationRepeat(Animation animation) {

    int newHeight;
    int currentHeight;

    current = view.getMeasuredHeight();

    newHeight= currentHeight+ resizeAmount;
    if(newHeight> finalHeight){
        // check if reached final height

        // set new height to the final height
        newHeight = finalHeight;
        // set repeat count to zero so we don\'t have any more repeats
        anim.setRepeatCount(0);

    }

    // set new height
    LayoutParams params = view.getLayoutParams();                                           
    params.height = newHeight;
    v.setLayoutParams(params);                                      

}

@Override
public void onAnimationStart(Animation animation) {

}

};

class DummyAnimation extends Animation{}


float frameRate = 1000/30;                              
DummyAnimation anim = new DummyAnimation();
anim.setDuration((long)frameRate);                          
anim.setRepeatCount(Animation.INFINITE);
ResizeAnimationListener animListener = new ResizeAnimationListener(((View)view.getParent()).getHeight(), view, 25);
anim.setAnimationListener(animListener);

view.startAnimation(anim);
我在自己的应用程序上完成了这项工作。但是,固定在我正在调整大小的视图(因此在调整视图大小时在屏幕上移动)的视图似乎会出现故障。可能与重复调整大小有关,而不是其他任何内容,只是警告。也许别人知道为什么吗?     

要回复问题请先登录注册