1

My activity layout as follows. Initially setting the "heightView's" weight as 100. Then 4 seconds after launching, I want to animate heightView's height to 51 So that I can make a sling effect of inner "LinearLayout".

I am very new to android.

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

My java code ( not working )

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

Please help me thanks in advance

ramesh
  • 4,008
  • 13
  • 72
  • 117

1 Answers1

1

Try the below code:

It may not give you on what you want exactly. But it can definitely help you to modify it according to your requirement.

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();
   }
Kanth
  • 6,681
  • 3
  • 29
  • 41