전환 애니메이션이 있는 축소 축소 레이아웃 축소 ExpandLayout

4020 단어

ExpandLayout


간단한 소개


인터페이스 뷰로 인해.VISIBLE 및 View.GONE의 애니메이션이 너무 딱딱해서 ExpandLayout 클래스를 써서 부드럽게 과도했다.기본적인 사고방식, 동적 설정 배치의 높이.
  • 핵심 애니메이션 효과 코드
  •     /**
         *       
         */
        private void animateToggle(long animationDuration) {
            ValueAnimator heightAnimation = isExpand ?
                    ValueAnimator.ofFloat(0f, viewHeight) : ValueAnimator.ofFloat(viewHeight, 0f);
            heightAnimation.setDuration(animationDuration / 2);
            heightAnimation.setStartDelay(animationDuration / 2);
    
            heightAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {
                    float val = (float) animation.getAnimatedValue();
                    setViewHeight(layoutView, (int) val);
                }
            });
    
            heightAnimation.start();
        }

    효과 미리 보기


    사용


    ExpandLayout은 RelativeLayout을 계승하기 때문에 레이아웃에 컨트롤을 직접 포함할 수 있습니다
  • 레이아웃 파일
  •  <com.seselin.View.ExpandLayout
            android:id="@+id/expandLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="#FFFF00"
            android:clickable="true">
    
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:padding="15dp"
                android:text="          " />
    
        com.seselin.View.ExpandLayout>
  • java 코드의 초기 상태 표시 여부,toggleExpand 접기/펼치기 전환
  •     private ExpandLayout mExpandLayout;
    
        public void initExpandView() {
            mExpandLayout = (ExpandLayout) findViewById(R.id.expandLayout);
            mExpandLayout.initExpand(false);//       ,    
            button.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    mExpandLayout.toggleExpand();
                }
            });
        }

    프로젝트 주소

    좋은 웹페이지 즐겨찾기