价值动画不适用于5.0 Lollipop

时间:2015-09-07 09:14:19

标签: android android-layout android-activity android-animation

我正在运行Android动画片的示例。它正在使用价值动画。我有两个设备,一个是samsang note 3和4.4.2,另一个是galaxy s5和5.0。动画在note 3手机上工作正常,但没有在galaxy s5 mobile上工作。这是一个Os依赖的问题还是其他问题。任何想法都会有很大的帮助。这是我的代码

public class MainActivity extends Activity {

LinearLayout mLinearLayout;
LinearLayout mLinearLayoutHeader;
ValueAnimator mAnimator;

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

    mLinearLayout = (LinearLayout) findViewById(R.id.expandable);
    //mLinearLayout.setVisibility(View.GONE);
    mLinearLayoutHeader = (LinearLayout) findViewById(R.id.header);

    //Add onPreDrawListener
    mLinearLayout.getViewTreeObserver().addOnPreDrawListener(
            new ViewTreeObserver.OnPreDrawListener() {

        @Override
        public boolean onPreDraw() {
            mLinearLayout.getViewTreeObserver().removeOnPreDrawListener(this);
            mLinearLayout.setVisibility(View.GONE);

            final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
            final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
            mLinearLayout.measure(widthSpec, heightSpec);
        //  mAnimator.setDuration(1000);
            mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
            return true;
        }
    });


    mLinearLayoutHeader.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (mLinearLayout.getVisibility()==View.GONE){
                expand();
            }else{
                collapse();
            }
        }
    });
}


private void expand() {
    //set Visible
    mLinearLayout.setVisibility(View.VISIBLE);

    /* Remove and used in preDrawListener
    final int widthSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    final int heightSpec = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED);
    mLinearLayout.measure(widthSpec, heightSpec);

    mAnimator = slideAnimator(0, mLinearLayout.getMeasuredHeight());
    */
    mAnimator.setDuration(1000);
    mAnimator.start();
}

private void collapse() {
    int finalHeight = mLinearLayout.getHeight();

    ValueAnimator mAnimator = slideAnimator(finalHeight, 0);

    mAnimator.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationEnd(Animator animator) {
            //Height=0, but it set visibility to GONE
            mLinearLayout.setVisibility(View.GONE);
        }

        @Override
        public void onAnimationStart(Animator animator) {
        }

        @Override
        public void onAnimationCancel(Animator animator) {
        }

        @Override
        public void onAnimationRepeat(Animator animator) {
        }
    });
    mAnimator.start();
}


private ValueAnimator slideAnimator(int start, int end) {

    ValueAnimator animator = ValueAnimator.ofInt(start, end);


    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            //Update Height
            int value = (Integer) valueAnimator.getAnimatedValue();

            ViewGroup.LayoutParams layoutParams = mLinearLayout.getLayoutParams();
            layoutParams.height = value;
            mLinearLayout.setLayoutParams(layoutParams);
        }
    });
    return animator;
}

}

这是gradle和manifest中的sdk版本。

 <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="21" />

这是我的xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/header"
        android:layout_width="fill_parent"
        android:layout_height="64dp"
        android:layout_marginTop="15dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="#FFF"
        android:orientation="horizontal" >

        <TextView
            android:layout_marginTop="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginBottom="8dp"
            android:id="@+id/color"
            android:layout_width="@dimen/color_width"
            android:layout_height="@dimen/color_height"
            android:background="@drawable/rectangle"
            android:gravity="center_vertical"
            android:text=""
            android:textAlignment="center"
            android:textStyle="bold"
            android:fontFamily="sans-serif-light"
            />

        <TextView
            android:id="@+id/clickme"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:textStyle="bold"
            android:gravity="center_vertical"
            android:fontFamily="sans-serif-light"
            android:text="@string/clickme" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/expandable"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="#FFF"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:text="@string/hello_world" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:text="@string/hello_world" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:text="@string/hello_world" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:text="@string/hello_world" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="sans-serif-light"
            android:text="@string/hello_world" />

    </LinearLayout>

</LinearLayout>

0 个答案:

没有答案