2121import android .os .Bundle ;
2222import android .view .View ;
2323import android .view .ViewGroup ;
24+ import android .view .ViewTreeObserver ;
2425import android .widget .LinearLayout ;
2526
2627public class MainActivity extends Activity {
2728
2829 LinearLayout mLinearLayout ;
2930 LinearLayout mLinearLayoutHeader ;
31+ ValueAnimator mAnimator ;
3032
3133 @ Override
3234 protected void onCreate (Bundle savedInstanceState ) {
3335 super .onCreate (savedInstanceState );
3436 setContentView (R .layout .activity_main );
3537
3638 mLinearLayout = (LinearLayout ) findViewById (R .id .expandable );
37- mLinearLayout .setVisibility (View .GONE );
39+ // mLinearLayout.setVisibility(View.GONE);
3840 mLinearLayoutHeader = (LinearLayout ) findViewById (R .id .header );
3941
42+ //Add onPreDrawListener
43+ mLinearLayout .getViewTreeObserver ().addOnPreDrawListener (
44+ new ViewTreeObserver .OnPreDrawListener () {
45+
46+ @ Override
47+ public boolean onPreDraw () {
48+ mLinearLayout .getViewTreeObserver ().removeOnPreDrawListener (this );
49+ mLinearLayout .setVisibility (View .GONE );
50+
51+ final int widthSpec = View .MeasureSpec .makeMeasureSpec (0 , View .MeasureSpec .UNSPECIFIED );
52+ final int heightSpec = View .MeasureSpec .makeMeasureSpec (0 , View .MeasureSpec .UNSPECIFIED );
53+ mLinearLayout .measure (widthSpec , heightSpec );
54+
55+ mAnimator = slideAnimator (0 , mLinearLayout .getMeasuredHeight ());
56+ return true ;
57+ }
58+ });
59+
60+
4061 mLinearLayoutHeader .setOnClickListener (new View .OnClickListener () {
4162
4263 @ Override
@@ -54,12 +75,15 @@ public void onClick(View v) {
5475 private void expand () {
5576 //set Visible
5677 mLinearLayout .setVisibility (View .VISIBLE );
57-
78+
79+ /* Remove and used in preDrawListener
5880 final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
5981 final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
6082 mLinearLayout.measure(widthSpec, heightSpec);
6183
62- ValueAnimator mAnimator = slideAnimator (0 , mLinearLayout .getMeasuredHeight ());
84+ mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
85+ */
86+
6387 mAnimator .start ();
6488 }
6589
0 commit comments