UI滑动效果

This commit is contained in:
zhangyuanzhen
2020-03-16 11:44:07 +08:00
parent f7eadb8792
commit 1b1bd97f0b
7 changed files with 35 additions and 6 deletions

View File

@@ -59,6 +59,7 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
private DiscreteScrollView scroller;
private static final int CARD_SIZE = 6;
private AppIndicatorAdapter appIndicatorAdapter;
@Override
protected int getLayoutId() {
@@ -88,7 +89,7 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
apps = NavigatorApps.getApps();
AppIndicatorAdapter appIndicatorAdapter = new AppIndicatorAdapter(getContext(), apps);
appIndicatorAdapter = new AppIndicatorAdapter(getContext(), apps);
scroller.setAdapter(appIndicatorAdapter);
scroller.scrollToPosition(Integer.MAX_VALUE / 2 - 1);
//mNavigation.setOnClickListener( view -> {
@@ -184,6 +185,9 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
Logger.d(TAG, "onCurrentItemChanged--position--" + i % CARD_SIZE);
int currentPosition = (i - 2) % CARD_SIZE;
if (!scroller.isComputingLayout()) {
appIndicatorAdapter.setCurrentPos(i);
}
//this.currentPosition=currentPosition;
AppServiceHandler.getMogoCardManager().switch2(apps.get(i % CARD_SIZE).mModuleType);

View File

@@ -3,6 +3,8 @@ package com.mogo.module.apps.adapter;
import android.content.Context;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.core.content.ContextCompat;
import com.mogo.module.apps.R;
import com.mogo.module.apps.adapter.base.RecycleBaseAdapter;
import com.mogo.module.apps.adapter.base.RecycleViewHolder;
@@ -14,6 +16,9 @@ import java.util.List;
* 2020-03-09.
*/
public class AppIndicatorAdapter extends RecycleBaseAdapter<NavigatorApp> {
private int currentPos;
/**
*
*/
@@ -30,5 +35,20 @@ public class AppIndicatorAdapter extends RecycleBaseAdapter<NavigatorApp> {
ImageView ivIndicator = holder.getView(R.id.module_apps_id_app_icon);
ivIndicator.setImageResource(integer.getmIconId());
holder.setText(R.id.module_apps_id_app_name,integer.getmName() );
TextView tvTitle = holder.getView(R.id.module_apps_id_app_name);
if (currentPos==holder.getLayoutPosition()) {
ivIndicator.setImageResource(integer.getmIconId());
tvTitle.setTextColor(ContextCompat.getColor(context,R.color.white));
}else {
tvTitle.setTextColor(ContextCompat.getColor(context,R.color.white_80));
ivIndicator.setImageResource(integer.getmUncheckedIconId());
}
}
public void setCurrentPos(int currentPos){
this.currentPos=currentPos;
notifyDataSetChanged();
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.module.apps.utils;
import android.view.View;
import androidx.annotation.FloatRange;
import androidx.recyclerview.widget.RecyclerView;
import com.mogo.module.apps.R;
import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer;
import com.yarolegovich.discretescrollview.transform.Pivot;
@@ -26,7 +27,7 @@ public class CardScaleTransformer implements DiscreteScrollItemTransformer {
}
@Override
public void transformItem(View item, float position) {
public void transformItem(View item, RecyclerView.ViewHolder childViewHolder, float position) {
item= item.findViewById(R.id.module_apps_id_app_icon);
pivotX.setOn(item);

View File

@@ -38,7 +38,7 @@
android:text="全部应用"
android:maxLines="1"
android:layout_marginTop="@dimen/dp_24"
android:textColor="#FFFFFFFF"
android:textColor="@color/white_80"
android:textSize="@dimen/dp_26"
/>

View File

@@ -352,8 +352,10 @@ public class DiscreteScrollLayoutManager extends LinearLayoutManager {
int clampAfterDistance = scrollToChangeCurrent * transformClampItemCount;
for (int i = 0; i < recyclerViewProxy.getChildCount(); i++) {
View child = recyclerViewProxy.getChildAt(i);
//RecyclerView.ViewHolder childViewHolder = recyclerView.getChildViewHolder(child);
float position = getCenterRelativePositionOf(child, clampAfterDistance);
itemTransformer.transformItem(child, position);
itemTransformer.transformItem(child,null, position);
}
}
}

View File

@@ -1,11 +1,12 @@
package com.yarolegovich.discretescrollview.transform;
import android.view.View;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by yarolegovich on 02.03.2017.
*/
public interface DiscreteScrollItemTransformer {
void transformItem(View item, float position);
void transformItem(View item, RecyclerView.ViewHolder childViewHolder,float position);
}

View File

@@ -2,6 +2,7 @@ package com.yarolegovich.discretescrollview.transform;
import android.view.View;
import androidx.annotation.FloatRange;
import androidx.recyclerview.widget.RecyclerView;
/**
* Created by yarolegovich on 03.03.2017.
@@ -21,7 +22,7 @@ public class ScaleTransformer implements DiscreteScrollItemTransformer {
}
@Override
public void transformItem(View item, float position) {
public void transformItem(View item, RecyclerView.ViewHolder childViewHolder, float position) {
pivotX.setOn(item);
pivotY.setOn(item);
float closenessToCenter = 1f - Math.abs(position);