adaptee) {
+ this.adaptee = adaptee;
+ }
+
+ @Override
+ public void onScrollStart(@NonNull T currentItemHolder, int adapterPosition) {
+
+ }
+
+ @Override
+ public void onScrollEnd(@NonNull T currentItemHolder, int adapterPosition) {
+
+ }
+
+ @Override
+ public void onScroll(float scrollPosition,
+ int currentIndex, int newIndex,
+ @Nullable T currentHolder, @Nullable T newCurrentHolder) {
+ adaptee.onScroll(scrollPosition, currentIndex, newIndex, currentHolder, newCurrentHolder);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof ScrollListenerAdapter) {
+ return adaptee.equals(((ScrollListenerAdapter) obj).adaptee);
+ } else {
+ return super.equals(obj);
+ }
+ }
+}
diff --git a/libraries/card-library/src/main/res/values/attr.xml b/libraries/card-library/src/main/res/values/attr.xml
new file mode 100644
index 0000000000..7310089318
--- /dev/null
+++ b/libraries/card-library/src/main/res/values/attr.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries/card-library/src/main/res/values/strings.xml b/libraries/card-library/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..4909bfbff7
--- /dev/null
+++ b/libraries/card-library/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+
+ You should not set LayoutManager on DiscreteScrollView.class instance. Library uses a special one. Just don\'t call the method.
+ InfiniteScrollAdapter is supposed to work only with DiscreteScrollView
+
diff --git a/modules/mogo-module-apps/build.gradle b/modules/mogo-module-apps/build.gradle
index 8b87ab74eb..4ac0696a0d 100644
--- a/modules/mogo-module-apps/build.gradle
+++ b/modules/mogo-module-apps/build.gradle
@@ -43,10 +43,10 @@ dependencies {
implementation rootProject.ext.dependencies.material
annotationProcessor rootProject.ext.dependencies.aroutercompiler
implementation rootProject.ext.dependencies.androidxrecyclerview
-
if (Boolean.valueOf(RELEASE)) {
implementation rootProject.ext.dependencies.mogomap
implementation rootProject.ext.dependencies.mogomapapi
+ implementation rootProject.ext.dependencies.mogomapapi
implementation rootProject.ext.dependencies.mogoutils
api rootProject.ext.dependencies.mogocommons
api rootProject.ext.dependencies.mogoserviceapi
@@ -58,6 +58,8 @@ dependencies {
api project(":foudations:mogo-commons")
api project(':services:mogo-service-api')
implementation project(':modules:mogo-module-common')
+ implementation project(":libraries:card-library")
+
}
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
index 8caeabbe1b..6cf4635b34 100644
--- a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/AppNavigatorFragment.java
@@ -3,12 +3,18 @@ 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;
@@ -18,6 +24,9 @@ import com.mogo.service.fragmentmanager.IMogoFragmentManager;
import com.mogo.service.module.IMogoModuleProvider;
import com.mogo.utils.TipToast;
+import com.yarolegovich.discretescrollview.DiscreteScrollView;
+import com.yarolegovich.discretescrollview.transform.ScaleTransformer;
+import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -27,11 +36,10 @@ import java.util.Map;
*
* 描述
*/
-public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavigatorPresenter > implements AppNavigatorView {
+public class AppNavigatorFragment extends MvpFragment
+ implements AppNavigatorView, DiscreteScrollView.OnItemChangedListener,
+ DiscreteScrollView.ScrollStateChangeListener {
- private View mNavigation;
- private View mMediaCenter;
- private View mCarSettings;
private View mApps;
private IMogoFragmentManager mMogoFragmentManager;
@@ -42,6 +50,7 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
private IMogoModuleProvider mSearchProvider;
private IMogoAnalytics mMogoAnalytics;
+ private DiscreteScrollView scroller;
@Override
protected int getLayoutId() {
@@ -51,66 +60,105 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
@Override
protected void initViews() {
- mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation();
+ mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance()
+ .build(MogoServicePaths.PATH_FRAGMENT_MANAGER)
+ .navigation();
- mNavigation = findViewById( R.id.module_apps_id_navigation );
- mMediaCenter = findViewById( R.id.module_apps_ic_media_center );
- mCarSettings = findViewById( R.id.module_apps_ic_car_settings );
- mApps = findViewById( R.id.module_apps_id_apps );
- mNavigation.setOnClickListener( view -> {
- openSearchPanel();
- trackNavigatorClickEvent( 1 );
- } );
- mMediaCenter.setOnClickListener( view -> {
- try {
- LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_MUSIC );
- trackNavigatorClickEvent( 2 );
- } catch ( Exception e ) {
- TipToast.shortTip( R.string.module_apps_str_no_app );
- }
- } );
- mCarSettings.setOnClickListener( view -> {
- try {
- LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_CAR_SETTINGS );
- trackNavigatorClickEvent( 3 );
- } catch ( Exception e ) {
- TipToast.shortTip( R.string.module_apps_str_no_app );
- }
- } );
- mApps.setOnClickListener( view -> {
+ mApps = findViewById(R.id.module_apps_id_apps);
+
+ scroller = findViewById(R.id.module_apps_id_scroller);
+ scroller.setSlideOnFling(true);
+ scroller.addOnItemChangedListener(this);
+ scroller.addScrollStateChangeListener(this);
+ //scroller.setItemTransitionTimeMillis(DiscreteScrollViewOptions.getTransitionTime());
+ scroller.setItemTransformer(new CardScaleTransformer.Builder()
+ .setMinScale(0.84f)
+ .build());
+ //
+ //
+ //LinearLayoutManager linearLayoutManager =
+ // new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
+ //
+ //scroller.setLayoutManager(linearLayoutManager);
+
+ ArrayList 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_news);
+ integers.add(R.drawable.module_apps_ic_tanlu);
+ integers.add(R.drawable.module_apps_ic_media_center);
+
+ AppIndicatorAdapter appIndicatorAdapter = new AppIndicatorAdapter(getContext(), integers);
+ scroller.setAdapter(appIndicatorAdapter);
+ scroller.scrollToPosition(Integer.MAX_VALUE / 2-1);
+ //mNavigation.setOnClickListener( view -> {
+ // openSearchPanel();
+ // trackNavigatorClickEvent( 1 );
+ //} );
+ //mMediaCenter.setOnClickListener( view -> {
+ // try {
+ // LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_MUSIC );
+ // trackNavigatorClickEvent( 2 );
+ // } catch ( Exception e ) {
+ // TipToast.shortTip( R.string.module_apps_str_no_app );
+ // }
+ //} );
+ //mCarSettings.setOnClickListener( view -> {
+ // try {
+ // LaunchUtils.launchByPkg( getContext(), AppsConst.APP_PKG_CAR_SETTINGS );
+ // trackNavigatorClickEvent( 3 );
+ // } catch ( Exception e ) {
+ // TipToast.shortTip( R.string.module_apps_str_no_app );
+ // }
+ //} );
+ mApps.setOnClickListener(view -> {
openAppsPanel();
- trackNavigatorClickEvent( 4 );
- } );
+ trackNavigatorClickEvent(4);
+ });
+ }
+
+ private void scrollToCenter(int index) {
+
}
@NonNull
@Override
protected AppNavigatorPresenter createPresenter() {
- return new AppNavigatorPresenter( this );
+ return new AppNavigatorPresenter(this);
}
private void openSearchPanel() {
- mSearchProvider = ( IMogoModuleProvider ) ARouter.getInstance().build( MogoModulePaths.PATH_MODULE_SEARCH ).navigation();
- final Fragment fragment = mSearchProvider.createFragment( getContext(), null );
- mMogoFragmentManager.push( new FragmentDescriptor.Builder().fragment( fragment ).tag( MogoModulePaths.PATH_FRAGMENT_SEARCH ).notifyMainModule( true ).build() );
+ mSearchProvider = (IMogoModuleProvider) ARouter.getInstance()
+ .build(MogoModulePaths.PATH_MODULE_SEARCH)
+ .navigation();
+ final Fragment fragment = mSearchProvider.createFragment(getContext(), null);
+ mMogoFragmentManager.push(new FragmentDescriptor.Builder().fragment(fragment)
+ .tag(MogoModulePaths.PATH_FRAGMENT_SEARCH)
+ .notifyMainModule(true)
+ .build());
}
@Override
- public void onActivityCreated( @Nullable Bundle savedInstanceState ) {
- super.onActivityCreated( savedInstanceState );
- mMogoFragmentManager = ( IMogoFragmentManager ) ARouter.getInstance().build( MogoServicePaths.PATH_FRAGMENT_MANAGER ).navigation( getContext() );
- mMogoAnalytics = ( IMogoAnalytics ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_ANALYTICS ).navigation( getContext() );
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ mMogoFragmentManager = (IMogoFragmentManager) ARouter.getInstance()
+ .build(MogoServicePaths.PATH_FRAGMENT_MANAGER)
+ .navigation(getContext());
+ mMogoAnalytics = (IMogoAnalytics) ARouter.getInstance()
+ .build(MogoServicePaths.PATH_UTILS_ANALYTICS)
+ .navigation(getContext());
}
@Override
public void openAppsPanel() {
- AppsListActivity.start( getActivity() );
+ AppsListActivity.start(getActivity());
}
- private void trackNavigatorClickEvent( int type ) {
- final Map< String, Object > properties = new HashMap<>();
- properties.put( "type", type );
- mMogoAnalytics.track( "Launcher_APP_Icon", properties );
+ private void trackNavigatorClickEvent(int type) {
+ final Map properties = new HashMap<>();
+ properties.put("type", type);
+ mMogoAnalytics.track("Launcher_APP_Icon", properties);
}
@Override
@@ -120,8 +168,27 @@ public class AppNavigatorFragment extends MvpFragment< AppNavigatorView, AppNavi
@Override
public void onDestroyView() {
super.onDestroyView();
- if ( mPresenter != null ) {
- mPresenter.onDestroy( getViewLifecycleOwner() );
+ if (mPresenter != null) {
+ mPresenter.onDestroy(getViewLifecycleOwner());
}
}
+
+ @Override
+ public void onCurrentItemChanged(@Nullable RecyclerView.ViewHolder viewHolder, int i) {
+
+ }
+
+ @Override public void onScrollStart(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
+
+ }
+
+ @Override public void onScrollEnd(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
+
+ }
+
+ @Override
+ public void onScroll(float v, int i, int i1, @Nullable RecyclerView.ViewHolder viewHolder,
+ @Nullable RecyclerView.ViewHolder t1) {
+
+ }
}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java
new file mode 100644
index 0000000000..f5003e91d1
--- /dev/null
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/AppIndicatorAdapter.java
@@ -0,0 +1,34 @@
+package com.mogo.module.apps.adapter;
+
+import android.content.Context;
+import android.view.View;
+import android.widget.ImageView;
+import com.mogo.module.apps.R;
+import com.mogo.module.apps.adapter.base.RecycleBaseAdapter;
+import com.mogo.module.apps.adapter.base.RecycleViewHolder;
+import java.util.List;
+
+/**
+ * @author zyz
+ * 2020-03-09.
+ */
+public class AppIndicatorAdapter extends RecycleBaseAdapter {
+ /**
+ *
+ */
+ public AppIndicatorAdapter(Context context, List list
+ ) {
+ super(context, list, R.layout.module_apps_item_app_indicator);
+ }
+
+ @Override public int getItemCount() {
+ return Integer.MAX_VALUE;
+ }
+
+ @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] );
+ }
+ private String[] names=new String[]{"新鲜事","在线车辆","首页","探路","车聊聊"};
+}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java
new file mode 100644
index 0000000000..2a8cc64079
--- /dev/null
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleBaseAdapter.java
@@ -0,0 +1,122 @@
+package com.mogo.module.apps.adapter.base;
+
+import android.content.Context;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+import androidx.recyclerview.widget.RecyclerView;
+import java.util.List;
+
+/**
+ *
+ * Title: adapter
+ *
+ *
+ * Description:
+ *
+ *
+ * Copyright: Copyright (c) 2015
+ *
+ *
+ *
+ */
+public abstract class RecycleBaseAdapter extends
+ RecyclerView.Adapter
+{
+
+ protected Context context;
+ protected List list;
+ private int resourceID;
+ private Toast toast;
+
+ /**
+ * @param context
+ */
+ public RecycleBaseAdapter(Context context, List list, int resourceID)
+ {
+ super();
+ this.context = context;
+ this.list = list;
+ this.resourceID = resourceID;
+ }
+
+ @Override
+ public RecycleViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType)
+ {
+ View v = LayoutInflater.from(context).inflate(resourceID, viewGroup,
+ false);
+
+ RecycleViewHolder holder = RecycleViewHolder
+ .get(v);
+
+ initHolder(holder);
+
+ return holder;
+ }
+
+ @Override
+ public void onBindViewHolder(
+ RecycleViewHolder viewHolder, int position)
+ {
+ onBindViewHolder(viewHolder, list.get(position % list.size()));
+ }
+
+ @Override
+ public int getItemCount()
+ {
+ return list == null ? 0 : list.size();
+ }
+
+ public abstract void onBindViewHolder(
+ RecycleViewHolder holder, T t);
+
+ public void initHolder(RecycleViewHolder holder)
+ {
+
+ }
+ public void setDatas(List list)
+ {
+ setDatas(list, false);
+ }
+
+ public void setDatas(List list, boolean add)
+ {
+ if (add)
+ {
+ this.list.addAll(list);
+ }
+ else
+ {
+ this.list = list;
+ }
+ notifyDataSetChanged();
+ }
+ public void clear(){
+ if (list != null) {
+ list.clear();
+ notifyDataSetChanged();
+ }
+ }
+ public void messageShow(String mes)
+ {
+ if (toast==null){
+ toast= Toast.makeText(context,mes, Toast.LENGTH_LONG);
+ }
+ else{
+ toast.setText(mes);
+ }
+ toast.show();
+ }
+
+ public T getItem(int position){
+ if (list==null||list.size()==0){
+ return null;
+ }
+ return list.get(position);
+ }
+
+ public List getList() {
+ return list;
+ }
+}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleViewHolder.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleViewHolder.java
new file mode 100644
index 0000000000..58bbebbfce
--- /dev/null
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/adapter/base/RecycleViewHolder.java
@@ -0,0 +1,138 @@
+package com.mogo.module.apps.adapter.base;
+
+import android.graphics.Bitmap;
+import android.text.SpannableString;
+import android.util.SparseArray;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.ImageView;
+import android.widget.TextView;
+import androidx.recyclerview.widget.RecyclerView;
+
+public class RecycleViewHolder extends RecyclerView.ViewHolder {
+
+ private SparseArray mViews;
+
+ private View mConvertView;
+
+ public RecycleViewHolder(View itemView) {
+ super(itemView);
+ this.mConvertView = itemView;
+ mViews = new SparseArray();
+ // TODO Auto-generated constructor stub
+ }
+
+ public static RecycleViewHolder get(View itemView) {
+ return new RecycleViewHolder(itemView);
+ }
+
+ public View getConvertView() {
+ return mConvertView;
+ }
+
+ public T getView(int viewId) {
+ View view = mViews.get(viewId);
+ if (view == null) {
+ view = mConvertView.findViewById(viewId);
+ mViews.put(viewId, view);
+ }
+ return (T) view;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @param text
+ * @return
+ */
+ public RecycleViewHolder setText(int viewId, String text) {
+ TextView tv = getView(viewId);
+ if (tv==null)return this;
+ tv.setText(text);
+ return this;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @param text
+ * @return
+ */
+ public RecycleViewHolder setText(int viewId, SpannableString text) {
+ TextView tv = getView(viewId);
+ tv.setText(text);
+ return this;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @param resId
+ * @return
+ */
+ public RecycleViewHolder setImageResource(int viewId, int resId) {
+ ImageView view = getView(viewId);
+ view.setImageResource(resId);
+ return this;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @return
+ */
+ public RecycleViewHolder setImageBitmap(int viewId, Bitmap bitmap) {
+ ImageView view = getView(viewId);
+ view.setImageBitmap(bitmap);
+ return this;
+ }
+
+
+ /**
+ *
+ * @param viewId
+ * @param resId
+ * @return
+ */
+ // public ViewHolder setImageURI(int viewId, String url) {
+ // ImageView view = getView(viewId);
+ // // ImageLoader.getInstance.loadImg(view,url);
+ // return this;
+ // }
+
+ /**
+ *
+ * @param viewId
+ * @param resId
+ * @return
+ */
+ public RecycleViewHolder setBackgroundImage(int viewId, int resId) {
+ View view = getView(viewId);
+ view.setBackgroundResource(resId);
+ return this;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @param resId
+ * @return
+ */
+ public RecycleViewHolder setTextColor(int viewId, int resId) {
+ TextView view = getView(viewId);
+ view.setTextColor(resId);
+ return this;
+ }
+
+ /**
+ *
+ * @param viewId
+ * @return
+ */
+ public RecycleViewHolder setOnClickListener(int viewId,
+ OnClickListener listener) {
+ getView(viewId).setOnClickListener(listener);
+ return this;
+ }
+
+}
diff --git a/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java
new file mode 100644
index 0000000000..1bc8021d5d
--- /dev/null
+++ b/modules/mogo-module-apps/src/main/java/com/mogo/module/apps/utils/CardScaleTransformer.java
@@ -0,0 +1,91 @@
+package com.mogo.module.apps.utils;
+
+import android.view.View;
+import androidx.annotation.FloatRange;
+import com.mogo.module.apps.R;
+import com.yarolegovich.discretescrollview.transform.DiscreteScrollItemTransformer;
+import com.yarolegovich.discretescrollview.transform.Pivot;
+import com.yarolegovich.discretescrollview.transform.ScaleTransformer;
+
+/**
+ * @author zyz
+ * 2020-03-11.
+ */
+public class CardScaleTransformer implements DiscreteScrollItemTransformer {
+
+ private Pivot pivotX;
+ private Pivot pivotY;
+ private float minScale;
+ private float maxMinDiff;
+
+ public CardScaleTransformer() {
+ pivotX = Pivot.X.CENTER.create();
+ pivotY = Pivot.Y.BOTTOM.create();
+ minScale = 0.8f;
+ maxMinDiff = 0.2f;
+ }
+
+ @Override
+ public void transformItem(View item, float position) {
+
+ item= item.findViewById(R.id.module_apps_id_app_icon);
+ pivotX.setOn(item);
+ pivotY.setOn(item);
+ float closenessToCenter = 1f - Math.abs(position);
+ float scale = minScale + maxMinDiff * closenessToCenter;
+ item.setScaleX(scale);
+ item.setScaleY(scale);
+ }
+
+ public static class Builder {
+
+ private CardScaleTransformer transformer;
+ private float maxScale;
+
+ public Builder() {
+ transformer = new CardScaleTransformer();
+ maxScale = 1f;
+ }
+
+ public Builder setMinScale(@FloatRange(from = 0.01) float scale) {
+ transformer.minScale = scale;
+ return this;
+ }
+
+ public Builder setMaxScale(@FloatRange(from = 0.01) float scale) {
+ maxScale = scale;
+ return this;
+ }
+
+ public Builder setPivotX(Pivot.X pivotX) {
+ return setPivotX(pivotX.create());
+ }
+
+ public Builder setPivotX(Pivot pivot) {
+ assertAxis(pivot, Pivot.AXIS_X);
+ transformer.pivotX = pivot;
+ return this;
+ }
+
+ public Builder setPivotY(Pivot.Y pivotY) {
+ return setPivotY(pivotY.create());
+ }
+
+ public Builder setPivotY(Pivot pivot) {
+ assertAxis(pivot, Pivot.AXIS_Y);
+ transformer.pivotY = pivot;
+ return this;
+ }
+
+ public CardScaleTransformer build() {
+ transformer.maxMinDiff = maxScale - transformer.minScale;
+ return transformer;
+ }
+
+ private void assertAxis(Pivot pivot, @Pivot.Axis int axis) {
+ if (pivot.getAxis() != axis) {
+ throw new IllegalArgumentException("You passed a Pivot for wrong axis.");
+ }
+ }
+ }
+}
diff --git a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_apps.png b/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_apps.png
deleted file mode 100755
index c564b8867f..0000000000
Binary files a/modules/mogo-module-apps/src/main/res/drawable-ldpi/module_apps_ic_apps.png and /dev/null differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png
index 80ecfda0bd..f1fc6671f2 100755
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_apps.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_icon.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_icon.png
new file mode 100755
index 0000000000..9d74b24ea8
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_icon.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_unchecked.png
new file mode 100755
index 0000000000..9b4d5501dc
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_chat_unchecked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest.png
new file mode 100755
index 0000000000..5d0d4e1a6d
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest_unchecked.png
new file mode 100755
index 0000000000..807d603b7b
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_interest_unchecked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png
old mode 100644
new mode 100755
index 13aa66438a..1e6247d47a
Binary files a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center_checked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center_checked.png
new file mode 100755
index 0000000000..ded21b6af2
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_media_center_checked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news.png
new file mode 100755
index 0000000000..b3bc19464e
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news_unchecked.png
new file mode 100755
index 0000000000..5a64a68660
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_news_unchecked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car.png
new file mode 100755
index 0000000000..761a11b72a
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car_unchecked.png
new file mode 100755
index 0000000000..b967fc7071
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_online_car_unchecked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu.png
new file mode 100755
index 0000000000..edd6eaca26
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu.png differ
diff --git a/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu_unchecked.png b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu_unchecked.png
new file mode 100755
index 0000000000..ac2a05136b
Binary files /dev/null and b/modules/mogo-module-apps/src/main/res/drawable-xhdpi/module_apps_ic_tanlu_unchecked.png differ
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
index 97cbe13f84..5c05b17a94 100644
--- a/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_fragment_apps_navigator.xml
@@ -1,35 +1,46 @@
-
+ android:paddingBottom="@dimen/module_apps_navigation_icon_paddingBottom"
+ >
-
+
+
-
-
-
-
\ No newline at end of file
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml
new file mode 100644
index 0000000000..8e02e01c0e
--- /dev/null
+++ b/modules/mogo-module-apps/src/main/res/layout/module_apps_item_app_indicator.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
index ff19f10f5d..8981b061bc 100644
--- a/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-apps/src/main/res/values-xhdpi/dimens.xml
@@ -5,9 +5,9 @@
30px
4px
103px
- 120px
- 120px
- 60px
+ 94px
+ 94px
+ 43px
60px
32px
32px
diff --git a/modules/mogo-module-apps/src/main/res/values/dimens.xml b/modules/mogo-module-apps/src/main/res/values/dimens.xml
index 604c52ddec..f3a1d89594 100644
--- a/modules/mogo-module-apps/src/main/res/values/dimens.xml
+++ b/modules/mogo-module-apps/src/main/res/values/dimens.xml
@@ -14,4 +14,5 @@
220px
220px
154px
+ 174px
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
index 43e0a20977..a7467d616c 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerPoiTypeEnum.java
@@ -26,4 +26,10 @@ public interface MarkerPoiTypeEnum {
public String FOURS_PONDING = "10008";
//超市打折
public String FOURS_SHOP_FREE = "10009";
+ //浓雾
+ public String FOURS_FOG = "10010";
+ //结冰
+ public String FOURS_ICE = "10011";
+ //停车场
+ public String FOURS_PARKING = "10012";
}
\ No newline at end of file
diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
index 6e8afdce87..98c3b35002 100644
--- a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
+++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerUserInfo.java
@@ -17,7 +17,9 @@ public class MarkerUserInfo implements Serializable {
private Integer age;// 年龄段,可以为空,与车聊聊一致
// TODO V2X临时字段,接口出好后进行修改
- private String userDrivingLevel;//用户驾驶级别,老司机、安全驾驶、危险驾驶
+ private String lastActiveweekAvgscore;//末次活跃周驾驶行为平均得分
+ private String safeLabel;//车辆安全标签
+ private int safeLabelType;//1老司机 2安全驾驶 3危险驾驶
public void setAge(Integer age) {
this.age = age;
@@ -153,12 +155,32 @@ public class MarkerUserInfo implements Serializable {
this.userName = userName;
}
- public String getUserDrivingLevel() {
- return userDrivingLevel;
+ public void setUserId(long userId) {
+ this.userId = userId;
}
- public void setUserDrivingLevel(String userDrivingLevel) {
- this.userDrivingLevel = userDrivingLevel;
+ public String getLastActiveweekAvgscore() {
+ return lastActiveweekAvgscore;
+ }
+
+ public void setLastActiveweekAvgscore(String lastActiveweekAvgscore) {
+ this.lastActiveweekAvgscore = lastActiveweekAvgscore;
+ }
+
+ public String getSafeLabel() {
+ return safeLabel;
+ }
+
+ public void setSafeLabel(String safeLabel) {
+ this.safeLabel = safeLabel;
+ }
+
+ public int getSafeLabelType() {
+ return safeLabelType;
+ }
+
+ public void setSafeLabelType(int safeLabelType) {
+ this.safeLabelType = safeLabelType;
}
@Override
@@ -170,7 +192,9 @@ public class MarkerUserInfo implements Serializable {
", userHead='" + userHead + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
- ", userDrivingLevel='" + userDrivingLevel + '\'' +
+ ", lastActiveweekAvgscore='" + lastActiveweekAvgscore + '\'' +
+ ", safeLabel='" + safeLabel + '\'' +
+ ", safeLabelType=" + safeLabelType +
'}';
}
}
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 fb201179b4..7397fbabc1 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
@@ -69,7 +69,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
private IMogoStatusManager mMogoStatusManager;
private OrientedViewPager mCardsContainer;
- private VerticalStackTransformer mTransformer;
+ //private VerticalStackTransformer mTransformer;
private CardModulesAdapter mCardModulesAdapter;
private View mHeader;
@@ -100,8 +100,8 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
@Override
protected void initViews() {
mCardsContainer = findViewById( R.id.module_main_id_cards_container );
- mCardsContainer.setOrientation( OrientedViewPager.Orientation.VERTICAL );
- mTransformer = new VerticalStackTransformer( this );
+ mCardsContainer.setOrientation( OrientedViewPager.Orientation.HORIZONTAL );
+ //mTransformer = new VerticalStackTransformer( this );
mCardsContainer.setOnPageChangeListener( mOnPageChangeListener = new OnPageChangeListenerAdapter() {
private boolean mIsLast = true;
private boolean mCardFlipStatus = false;
@@ -134,7 +134,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
}
} else if ( state == ViewPager.SCROLL_STATE_IDLE ) {
mCardFlipStatus = false;
- mTransformer.resetOffsetScroll();
+ //mTransformer.resetOffsetScroll();
}
int cardSize = mCardModulesAdapter.getCount();
@@ -159,7 +159,7 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme
int positionOffsetPixels ) {
super.onPageScrolled( position, positionOffset, positionOffsetPixels );
Logger.d( TAG, "pageScrolled : offset --- " + positionOffset );
- mTransformer.offsetScrollChanged( positionOffset );
+ //mTransformer.offsetScrollChanged( positionOffset );
}
} );
@@ -299,7 +299,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, mTransformer );
+ //mCardsContainer.setPageTransformer( true, mTransformer );
mCardsContainer.setAdapter( mCardModulesAdapter );
mCardCoverUpBottomLayout.setVisibility( View.VISIBLE );
diff --git a/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png
new file mode 100755
index 0000000000..bb0c8aef1c
Binary files /dev/null and b/modules/mogo-module-main/src/main/res/drawable-xhdpi/module_apps_bg_card.png differ
diff --git a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
index 7173faacc9..c03383b847 100644
--- a/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
+++ b/modules/mogo-module-main/src/main/res/layout/module_main_activity_main.xml
@@ -37,14 +37,18 @@
android:layout_marginLeft="@dimen/module_main_card_container_marginLeft"
android:layout_marginTop="@dimen/module_main_card_container_marginTop">
+
+ android:overScrollMode="never" />
+ />
diff --git a/settings.gradle b/settings.gradle
index 4747a1bb37..b813673c90 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -4,6 +4,7 @@ include ':foudations:mogo-utils'
include ':services:mogo-service-api'
include ':services:mogo-service'
include ':libraries:mogo-map'
+include ':libraries:card-library'
include ':foudations:mogo-commons'
include ':modules:mogo-module-map'
include ':modules:mogo-module-common'