diff --git a/.idea/misc.xml b/.idea/misc.xml index 707ee6e613..2dc54c489f 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/app/src/nwd/AndroidManifest.xml b/app/src/nwd/AndroidManifest.xml index c39db3e4d6..0e42bd5132 100644 --- a/app/src/nwd/AndroidManifest.xml +++ b/app/src/nwd/AndroidManifest.xml @@ -1,8 +1,8 @@ + package="com.mogo.launcher"> + diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 9290c6c3ab..2466b382ac 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -65,6 +65,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme private IMogoFragmentManager mMogoFragmentManager; private OrientedViewPager mCardsContainer; + private VerticalStackTransformer transformer; private CardModulesAdapter mCardModulesAdapter; private View mHeader; @@ -127,7 +128,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme protected void initViews() { mCardsContainer = findViewById( R.id.module_main_id_cards_container ); mCardsContainer.setOrientation( OrientedViewPager.Orientation.VERTICAL ); - + transformer = new VerticalStackTransformer( this ); mCardsContainer.setOnPageChangeListener( mOnPageChangeListener = new OnPageChangeListenerAdapter() { private boolean mIsLast = true; private boolean mCardFlipStatus = false; @@ -167,6 +168,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } } else if ( state == ViewPager.SCROLL_STATE_IDLE ) { mCardFlipStatus = false; + transformer.resetOffsetScroll(); } int cardSize = mCardModulesAdapter.getCount(); @@ -185,6 +187,13 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } Log.i( TAG, "onPageScrollStateChanged cost " + ( System.currentTimeMillis() - start ) + "ms" ); } + + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + super.onPageScrolled(position, positionOffset, positionOffsetPixels); + Logger.d(TAG,"pageScrolled : offset --- " + positionOffset); + transformer.offsetScrollChanged(positionOffset); + } } ); mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation( this ); @@ -320,7 +329,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme List< IMogoModuleProvider > providers = mMogoModuleHandler.loadCardsModule(); mCardModulesAdapter = new CardModulesAdapter( this, providers ); mCardsContainer.setOffscreenPageLimit( providers.size() ); - mCardsContainer.setPageTransformer( true, new VerticalStackTransformer( this ) ); + mCardsContainer.setPageTransformer( true, transformer ); mCardsContainer.setAdapter( mCardModulesAdapter ); mCardCoverUpBottomLayout.setVisibility(View.VISIBLE); diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java index 41a50a3e6e..f7433ad2dc 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/cards/VerticalStackTransformer.java @@ -13,6 +13,7 @@ public class VerticalStackTransformer extends VerticalBaseTransformer { private Context context; private int spaceBetweenFirAndSecWith;//第一张卡片和第二张卡片宽度差 private int spaceBetweenFirAndSecHeight;//第一张卡片和第二张卡片高度差 + private float offsetScroll = 0.0f;//ViewPager滑动时变化幅度 public VerticalStackTransformer( Context context ) { this.context = context; @@ -26,14 +27,25 @@ public class VerticalStackTransformer extends VerticalBaseTransformer { this.spaceBetweenFirAndSecHeight = spaceBetweenFirAndSecHeight; } + public void offsetScrollChanged(float offset){ + if(offset ==0){ + return; + } + offsetScroll = offset; + } + + public void resetOffsetScroll(){ + offsetScroll = 0.0f; + } + @Override protected void onTransform( View page, float position ) { - if ( position <= 0.0f ) { + if ( position == 0.0f ) { page.setAlpha( 1.0f ); page.setTranslationY( 0f ); //控制停止滑动切换的时候,只有最上面的一张卡片可以点击 page.setClickable( true ); - } else { + } else if(position>0){ float scale = ( float ) ( page.getWidth() - spaceBetweenFirAndSecWith * position ) / ( float ) ( page.getWidth() ); Logger.d("VerticalStackTransformer","scale :" + scale); //控制下面卡片的可见度 @@ -45,6 +57,20 @@ public class VerticalStackTransformer extends VerticalBaseTransformer { page.setScaleX( scale ); page.setScaleY( scale ); page.setTranslationY( -page.getHeight() * position + ( page.getHeight() * 0.5f ) * ( 1 - scale ) + spaceBetweenFirAndSecHeight * position ); + }else{ + float currentPage; + if(offsetScroll > 0.2f){ + currentPage = 0.2f; + }else{ + currentPage = offsetScroll; + } + page.setAlpha( 1 ); + page.setScaleX(1-currentPage); + page.setScaleY(1-currentPage); + page.setPivotX( page.getWidth() / 2f ); + page.setPivotY( page.getHeight() / 2f ); + page.setTranslationY( 0f ); + page.setClickable( false ); } } } \ No newline at end of file