2

这是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <SurfaceView
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="0dp" />

</RelativeLayout>

我想让这个观点随着时间的推移而增长。

这是动画的代码

SurfaceView surfaceViewTimer = (SurfaceView) findViewById(R.id.surface_view_timer);
Animation surfaceGrowingAnimation = new TranslateAnimation
    (0, 0, Animation.ZORDER_TOP, 300);
surfaceGrowingAnimation.setDuration(5000);

surfaceViewTimer.startAnimation(surfaceGrowingAnimation);

我想让这个动画从屏幕底部到顶部。目前它是从上到下。

4

3 回答 3

2

您可以使用ScaleAnimation.

例如,修改布局以使表面占据整个屏幕:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<SurfaceView
    android:id="@+id/surface"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="0dp"
    android:background="@color/red"
     />

然后在 Y 轴上从 0 缩放到 1:

    SurfaceView surface = (SurfaceView) findViewById(R.id.surface);

    ScaleAnimation animation = new ScaleAnimation(1.0f, 1.0f, 0.0f, 1.0f);
    animation.setDuration(5000);
    surface.startAnimation(animation);
于 2012-11-23T15:15:28.533 回答
1

你可以这样做TranslateAnimation

    final SurfaceView surface = (SurfaceView) findViewById(R.id.surface);

    surface.post(new Runnable() {
        @Override
        public void run() {
            TranslateAnimation translation = new TranslateAnimation(0f, 0f, surface.getHeight(), 0f);
            translation.setDuration(2000);
            surface.startAnimation(translation);
        }
    });
于 2012-11-23T15:43:47.973 回答
1

您可以通过结合缩放和平移动画来做到这一点。平移动画将有助于改变视图的位置,而动画中的缩放将有助于改变大小。并在您的代码中使用 Accelerate_Decelerate 插值器。插值器将提供所需的效果。您可以尝试使用不同类型的可用插值器来实现效果。

于 2012-11-23T17:04:31.497 回答