卡片效果

This commit is contained in:
zhangyuanzhen
2020-03-12 16:44:22 +08:00
parent 1827af85c6
commit 90f1c5b13f
27 changed files with 279 additions and 93 deletions

View File

@@ -3,29 +3,25 @@ package com.mogo.module.apps;
import android.os.Bundle;
import android.view.View;
import android.widget.HorizontalScrollView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.LinearSnapHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.mvp.MvpFragment;
import com.mogo.module.apps.adapter.AppIndicatorAdapter;
import com.mogo.module.apps.utils.CardScaleTransformer;
import com.mogo.module.apps.utils.LaunchUtils;
import com.mogo.module.common.MogoModulePaths;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.fragmentmanager.FragmentDescriptor;
import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.utils.TipToast;
import com.mogo.utils.logger.Logger;
import com.yarolegovich.discretescrollview.DiscreteScrollView;
import com.yarolegovich.discretescrollview.transform.ScaleTransformer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -38,8 +34,10 @@ import java.util.Map;
*/
public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavigatorPresenter>
implements AppNavigatorView, DiscreteScrollView.OnItemChangedListener<RecyclerView.ViewHolder>,
DiscreteScrollView.ScrollStateChangeListener<RecyclerView.ViewHolder> {
DiscreteScrollView.ScrollStateChangeListener<RecyclerView.ViewHolder>,
IMogoCardChangedListener {
private static final String TAG = "AppNavigatorFragment";
private View mApps;
private IMogoFragmentManager mMogoFragmentManager;
@@ -52,6 +50,8 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
private IMogoAnalytics mMogoAnalytics;
private DiscreteScrollView scroller;
private static final int CARD_SIZE = 6;
@Override
protected int getLayoutId() {
return R.layout.module_apps_fragment_apps_navigator;
@@ -83,15 +83,16 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
ArrayList<Integer> integers = new ArrayList<>(10);
integers.add(R.drawable.module_apps_ic_interest);
integers.add(R.drawable.module_apps_ic_online_car);
integers.add(R.drawable.module_apps_ic_interest);
integers.add(R.drawable.module_apps_ic_news);
integers.add(R.drawable.module_apps_ic_tanlu);
integers.add(R.drawable.module_apps_ic_media_center);
integers.add(R.drawable.module_apps_ic_chat);
integers.add(R.drawable.module_apps_ic_tanlu);
AppIndicatorAdapter appIndicatorAdapter = new AppIndicatorAdapter(getContext(), integers);
scroller.setAdapter(appIndicatorAdapter);
scroller.scrollToPosition(Integer.MAX_VALUE / 2-1);
scroller.scrollToPosition(Integer.MAX_VALUE / 2 - 1);
//mNavigation.setOnClickListener( view -> {
// openSearchPanel();
// trackNavigatorClickEvent( 1 );
@@ -116,6 +117,9 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
openAppsPanel();
trackNavigatorClickEvent(4);
});
AppServiceHandler.init(getContext());
AppServiceHandler.getMogoCardManager().registerCardChangedListener(TAG, this);
}
private void scrollToCenter(int index) {
@@ -175,7 +179,7 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
@Override
public void onCurrentItemChanged(@Nullable RecyclerView.ViewHolder viewHolder, int i) {
//AppServiceHandler.getMogoCardManager().invoke(i%CARD_SIZE,"");
}
@Override public void onScrollStart(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
@@ -191,4 +195,16 @@ public class AppNavigatorFragment extends MvpFragment<AppNavigatorView, AppNavig
@Nullable RecyclerView.ViewHolder t1) {
}
@Override public void onSwitched(int position, String moduleName) {
int index = (position - scroller.getCurrentItem() % CARD_SIZE + 2) % CARD_SIZE;
int i = scroller.getCurrentItem() + index;
//DiscreteScrollLayoutManager layoutManager =
// (DiscreteScrollLayoutManager) scroller.getLayoutManager();
//
//layoutManager.smoothScrollToPosition();
Logger.d(TAG, "position" + index + "scroll" + i);
scroller.smoothScrollToPosition(i);
}
}

View File

@@ -0,0 +1,47 @@
package com.mogo.module.apps;
import android.content.Context;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.map.location.IMogoLocationClient;
import com.mogo.map.marker.IMogoMarkerManager;
import com.mogo.map.navi.IMogoNavi;
import com.mogo.map.uicontroller.IMogoMapUIController;
import com.mogo.module.common.entity.MarkerResponse;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.service.IMogoServiceApis;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.analytics.IMogoAnalytics;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.imageloader.IMogoImageloader;
import com.mogo.service.map.IMogoMapService;
import com.mogo.service.statusmanager.IMogoStatusManager;
/**
* author : zyz
* e-mail : 1358506549@qq.com
* date : 2020-01-0718:54
* desc : 持有服务接口实例
* version: 1.0
*/
public class AppServiceHandler {
private static final String TAG = "AppServiceHandler";
private static IMogoServiceApis mApis;
private static IMogoCardManager mMogoCardManager;
private static IMogoAnalytics mMogoAnalytics;
public static void init( final Context context ) {
mApis = ( IMogoServiceApis ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICE_APIS ).navigation( context );
mMogoCardManager = mApis.getCardManagerApi();
mMogoAnalytics = mApis.getAnalyticsApi();
}
public static IMogoCardManager getMogoCardManager() {
return mMogoCardManager;
}
public static IMogoAnalytics getMogoAnalytics() {
return mMogoAnalytics;
}
}

View File

@@ -28,7 +28,7 @@ public class AppIndicatorAdapter extends RecycleBaseAdapter<Integer> {
@Override public void onBindViewHolder(RecycleViewHolder holder, Integer integer) {
ImageView ivIndicator = holder.getView(R.id.module_apps_id_app_icon);
ivIndicator.setImageResource(integer);
holder.setText(R.id.module_apps_id_app_name,names[holder.getLayoutPosition()%5] );
holder.setText(R.id.module_apps_id_app_name,names[holder.getLayoutPosition()%6] );
}
private String[] names=new String[]{"新鲜事","在线车辆","首页","探路","车聊聊"};
private String[] names=new String[]{"在线车辆","新鲜事","首页","媒体中心","车聊聊","探路"};
}