@@ -70,8 +70,12 @@ void measureChild(int width,int height){
7070 float stackSpaces = 0 ;
7171 everyHeight = height - layout .getPaddingTop () - layout .getPaddingBottom ();
7272 originX .add (layout .stackEdge );
73+ int padX = layout .stackPadX ;
74+ if (padX *(size -1 ) > layout .stackSpace ){
75+ padX = 0 ;
76+ }
7377 for (int i = 1 ; i < size ; i ++) {
74- int stackSpace = (int )(layout .stackSpace /( 1 + layout .stackZoomX * (size -1 -i )));
78+ int stackSpace = (int )(( layout .stackSpace - padX *( size - 1 - i ))* Math . pow ( layout .stackZoomX , (size -1 -i )));
7579 stackSpaces += stackSpace ;
7680 originX .add (originX .get (i - 1 ) + stackSpace );
7781 }
@@ -98,6 +102,7 @@ void layoutChild(){
98102 needRelayout = false ;
99103 int childSize = layout .getChildCount ();
100104 int stackSize = layout .stackSize ;
105+ int realSize = layout .getRealStackSize ();
101106 for (int i = 0 ; i < childSize ; i ++) {
102107 int top , bottom , left , right , pivot ;
103108 View view = layout .getChildAt (i );
@@ -117,7 +122,7 @@ void layoutChild(){
117122 view .setPivotX (pivot );
118123 view .setPivotY (everyHeight / 2 );
119124 view .layout (left , top , right , bottom );
120- view .setScaleY (getChildScale ( i , layout .stackZoomY ));
125+ view .setScaleY (( float ) Math . pow ( layout .stackZoomY , realSize - 1 - i ));
121126 if (view .getTranslationX () != 0f ){
122127 if (i +1 < stackSize ){
123128 view .setTranslationX (0 );
@@ -193,11 +198,6 @@ private void removeStackView(View view){
193198 }
194199 }
195200
196- private float getChildScale (int index ,float zoom ) {
197- int rate = layout .getRealStackSize () -1 - index ;
198- return (float ) Math .pow (1.0f - zoom ,rate );
199- }
200-
201201 /**
202202 * 在StackLayout是否能水平滑动
203203 * @return true:拦截滑动,false:放行
0 commit comments