1

Ma disposition de l'activité est la suivante. Initialement, le poids de "heightView" est fixé à 100. Puis 4 secondes après le lancement, je veux animer la hauteur de heightView à 51 afin que je puisse faire un effet de suspension de "LinearLayout" interne.Animer la hauteur de la vue android

Je suis très nouveau sur Android.

Mon XML Mise en page

<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> 

Mon code java (ne fonctionne pas)

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

S'il vous plaît me aider merci à l'avance

+0

Jetez un oeil à ceci: (http://stackoverflow.com/questions/8341745/animating-weightsum- object-using-objectanimator) –

+0

@ramesh poster votre code java –

+0

code mis à jour .. – ramesh

Répondre

1

Essayez le code ci-dessous:

Il ne peut pas vous donner ce que vous voulez exactement. Mais il peut certainement vous aider à le modifier en fonction de vos besoins.

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