动画android视图的高度

时间:2013-06-10 05:55:38

标签: android android-layout android-linearlayout android-animation

我的活动布局如下。最初将“heightView”的权重设置为100.然后在启动后4秒,我想将heightView的高度设置为51,以便我可以使内部“LinearLayout”产生吊索效果。

我对android很新。

我的布局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"
    android:orientation="vertical"
    android:background="@drawable/main_bg"
    tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_gravity="bottom"
    android:weightSum="100">
        <View 
        android:id="@+id/heightView"    
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="100" />
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="41"
        android:orientation="horizontal"
        android:background="@drawable/menu_repeat"
        android:tileMode="repeat" >
<ImageButton
        android:id="@+id/contactBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:src="@drawable/contact" />

<ImageButton
        android:id="@+id/events"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:src="@drawable/events" />

    </LinearLayout>


</LinearLayout>



</RelativeLayout>

我的java代码(不工作)

setContentView(R.layout.activity_main);


View myView=(View) findViewById(R.id.heightView);

ObjectAnimator scaleYOut = ObjectAnimator.ofFloat(myView, "weight", 50, 0f);
AnimatorSet set = new AnimatorSet();
set.play(scaleYOut);
set.setDuration(1000);
set.start();

请提前帮助我

1 个答案:

答案 0 :(得分:1)

请尝试以下代码:

它可能无法完全满足您的需求。但它绝对可以帮助您根据您的要求进行修改。

<强> main.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"
    android:orientation="vertical"
    tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:layout_gravity="bottom"
    android:weightSum="100">
        <View 
        android:id="@+id/heightView"    
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="40"
        android:background="#80009977"/>
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="60"
        android:orientation="horizontal"
        android:background="@drawable/ic_launcher"
        android:tileMode="repeat" >
<ImageButton
        android:id="@+id/contactBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

<ImageButton
        android:id="@+id/events"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher" />

    </LinearLayout>


</LinearLayout>

</RelativeLayout>

<强> MainActivity:

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        View myView=(View) findViewById(R.id.heightView);
        ObjectAnimator scaleXIn = ObjectAnimator.ofFloat(myView, "scaleX", 0f, 1f);
        ObjectAnimator scaleYIn = ObjectAnimator.ofFloat(myView, "scaleY", 0f, 1f);


        AnimatorSet set = new AnimatorSet();

           set.play(scaleXIn).with(scaleYIn);  
           set.setDuration(2000);
           set.start();
   }