1

My activity layout следующим образом. Первоначально устанавливая вес "heightView" равным 100. Затем, через 4 секунды после запуска, я хочу оживить высоту heightView до 51. Так что я могу сделать эффект sling внутреннего «LinearLayout».Animate android view height

Я очень новичок в 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(); 

Пожалуйста, помогите мне спасибо заранее

+0

Посмотрите в это: (http://stackoverflow.com/questions/8341745/animating-weightsum- свойство-using-objectanimator) –

+0

@ramesh опубликовать ваш код Java –

+0

обновленный код. – ramesh

ответ

1

Попробуйте следующий код:

It может не дать вам то, что вы хотите точно. Но это может определенно помочь вам изменить его в соответствии с вашим требованием.

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