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