瀏覽代碼

Merge branch 'develop' of https://github.com/swict/LifeplusAndroid into develop

hyodong.min 6 年之前
父節點
當前提交
4a9d5e1269

+ 52 - 30
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventListFragment.java

@@ -1,14 +1,12 @@
 package kr.co.zumo.app.lifeplus.view.screen.event;
 
-import android.graphics.Rect;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.constraint.ConstraintLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.PagerSnapHelper;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.SnapHelper;
+import android.support.design.widget.TabLayout;
+import android.support.v4.view.ViewPager;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -20,7 +18,6 @@ import kr.co.zumo.app.lifeplus.bean.api.EventBean;
 import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
 import kr.co.zumo.app.lifeplus.util.ResourceUtil;
 import kr.co.zumo.app.lifeplus.view.Event;
-import kr.co.zumo.app.lifeplus.view.IndexScrollListener;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 
 /**
@@ -35,7 +32,8 @@ import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
  */
 public class EventListFragment extends FragmentBase<EventListPresenter> implements IEventView {
   private CustomIndicator customIndicator;
-  private RecyclerView recyclerViewEvent;
+  private ViewPager recyclerViewEvent;
+  private TabLayout eventTab;
   private ConstraintLayout layoutMyEvent;
 
   @Override
@@ -45,31 +43,32 @@ public class EventListFragment extends FragmentBase<EventListPresenter> implemen
 
   @Override
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
-    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
+    // LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false);
     recyclerViewEvent = findViewById(R.id.recycler_view_event);
-    recyclerViewEvent.setLayoutManager(layoutManager);
-    recyclerViewEvent.addItemDecoration(new RecyclerView.ItemDecoration() {
-      @Override
-      public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
-        super.getItemOffsets(outRect, view, parent, state);
-        outRect.left = ResourceUtil.dpToPx(7);
-        outRect.right = ResourceUtil.dpToPx(7);
-      }
-    });
-    SnapHelper snapHelper = new PagerSnapHelper();
-    snapHelper.attachToRecyclerView(recyclerViewEvent);
+    eventTab = findViewById(R.id.tab_layout_event);
+//    recyclerViewEvent.setLayoutManager(layoutManager);
+//    recyclerViewEvent.addItemDecoration(new RecyclerView.ItemDecoration() {
+//      @Override
+//      public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
+//        super.getItemOffsets(outRect, view, parent, state);
+//        outRect.left = ResourceUtil.dpToPx(7);
+//        outRect.right = ResourceUtil.dpToPx(7);
+//      }
+//    });
+//    SnapHelper snapHelper = new PagerSnapHelper();
+//    snapHelper.attachToRecyclerView(recyclerViewEvent);
 
     layoutMyEvent = findViewById(R.id.layout_my_event);
 
-    customIndicator = findViewById(R.id.custom_indicator);
+    //customIndicator = findViewById(R.id.custom_indicator);
 
-    IndexScrollListener indexScrollListener = new IndexScrollListener(layoutManager, index -> {
-      customIndicator.onChangedIndex(index);
-      presenter.onChangedIndex(index);
-    });
+//    IndexScrollListener indexScrollListener = new IndexScrollListener(layoutManager, index -> {
+//      customIndicator.onChangedIndex(index);
+//      presenter.onChangedIndex(index);
+//    });
 
 
-    recyclerViewEvent.addOnScrollListener(indexScrollListener);
+    //recyclerViewEvent.addOnScrollListener(indexScrollListener);
     layoutMyEvent.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.MY_EVENT).build());});
   }
 
@@ -104,13 +103,36 @@ public class EventListFragment extends FragmentBase<EventListPresenter> implemen
 
   @Override
   public void draw(List<EventBean> eventBeans) {
-    EventListAdapter adapter = new EventListAdapter(getActivity(), eventBeans, event -> presenter.onEvent(event));
+//    EventListAdapter adapter = new EventListAdapter(getActivity(), eventBeans, event -> presenter.onEvent(event));
+//    recyclerViewEvent.setAdapter(adapter);
+//    customIndicator.setIndicatorSetting(recyclerViewEvent, R.color.C19000000, R.color.C000000);
+//
+//    if (eventBeans.size() == 1) {
+//      setVisibleMyEventButton(true);
+//    }
+    EventViewPagerAdapter adapter = new EventViewPagerAdapter(getActivity(), eventBeans, event -> {
+      switch (event.getEventId()) {
+        case Event.CLICK:
+          presenter.onEvent(new Event.Builder(Event.CLICK).index(recyclerViewEvent.getCurrentItem()).build());
+          break;
+        default:
+          break;
+      }
+    });
+
+    recyclerViewEvent.setClipToPadding(false);
+    recyclerViewEvent.setPageMargin(ResourceUtil.dpToPx(15));
+    recyclerViewEvent.setPadding(ResourceUtil.dpToPx(25), 0, ResourceUtil.dpToPx(25), 0);
     recyclerViewEvent.setAdapter(adapter);
-    customIndicator.setIndicatorSetting(recyclerViewEvent, R.color.C19000000, R.color.C000000);
+    recyclerViewEvent.setOffscreenPageLimit(4);
+    eventTab.setupWithViewPager(recyclerViewEvent, true);
 
-    if(eventBeans.size() == 1){
-      setVisibleMyEventButton(true);
-    }
+    recyclerViewEvent.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
+      @Override
+      public void onPageSelected(int position) {
+        presenter.onChangedIndex(position);
+      }
+    });
   }
 
   @Override

+ 4 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventListViewHolder.java

@@ -2,6 +2,7 @@ package kr.co.zumo.app.lifeplus.view.screen.event;
 
 import android.support.constraint.ConstraintLayout;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
@@ -47,6 +48,7 @@ public class EventListViewHolder extends RecyclerView.ViewHolder {
 
   public void init(EventBean bean, IEventListener listener) {
     if (null != bean) {
+      Log.e("APP#  EventListViewHolder | init", "|" + "=====>");
       Glide.with(imageViewThumbnail)
         .asBitmap()
 //      .apply(new RequestOptions().diskCacheStrategy(DiskCacheStrategy.NONE))
@@ -64,8 +66,8 @@ public class EventListViewHolder extends RecyclerView.ViewHolder {
       textViewEventTitle.setText(bean.getTitle());
       textViewEventPresent.setText(bean.getSubTitle());
       layoutFlag.setVisibility(View.GONE);
-      itemView.setOnClickListener(view -> {listener.onEvent(new Event.Builder(Event.CLICK).index(getAdapterPosition()).build());});
-      layoutFlag.setVisibility(APIData.isTrue(bean.getEntryCompleted()) ?View.VISIBLE : View.GONE);
+      itemView.setOnClickListener(view -> {listener.onEvent(new Event.Builder(Event.CLICK).build());});
+      layoutFlag.setVisibility(APIData.isTrue(bean.getEntryCompleted()) ? View.VISIBLE : View.GONE);
     }
   }
 

+ 67 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/event/EventViewPagerAdapter.java

@@ -0,0 +1,67 @@
+package kr.co.zumo.app.lifeplus.view.screen.event;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.v4.view.PagerAdapter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import java.util.List;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.bean.api.EventBean;
+import kr.co.zumo.app.lifeplus.view.IEventListener;
+
+/**
+ * EventViewPagerAdapter
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2019-03-18]   [최초 작성]
+ * @since 2019-03-18
+ */
+public class EventViewPagerAdapter extends PagerAdapter {
+
+  private LayoutInflater inflater;
+  private IEventListener listener;
+  private List<EventBean> eventBeans;
+
+  public EventViewPagerAdapter(Context context, List<EventBean> eventBeans, IEventListener listener) {
+    this.eventBeans = eventBeans;
+    this.listener = listener;
+    this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+  }
+
+  @Override
+  public int getCount() {
+    return eventBeans.size();
+  }
+
+  @Override
+  public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
+    return view.equals(object);
+  }
+
+  @NonNull
+  @Override
+  public Object instantiateItem(@NonNull ViewGroup container, int position) {
+    View view = inflater.inflate(R.layout.event_item_view, container, false);
+    EventListViewHolder holder = new EventListViewHolder(view);
+    holder.init(eventBeans.get(position), event -> {
+      if (null != listener) {
+        listener.onEvent(event);
+      }
+    });
+    container.addView(view);
+
+    return view;
+  }
+
+  @Override
+  public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
+    container.removeView((View) object);
+  }
+}

+ 6 - 0
app/src/main/res/drawable/black_tab_selector.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:drawable="@drawable/tab_black_active"
+        android:state_selected="true"/>
+  <item android:drawable="@drawable/tab_black_inactive"/>
+</selector>

+ 12 - 0
app/src/main/res/drawable/tab_black_active.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+  <item>
+    <shape
+      android:innerRadius="0dp"
+      android:shape="ring"
+      android:thickness="3dp"
+      android:useLevel="false">
+      <solid android:color="@color/C000000"/>
+    </shape>
+  </item>
+</layer-list>

+ 12 - 0
app/src/main/res/drawable/tab_black_inactive.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+  <item>
+    <shape
+      android:innerRadius="0dp"
+      android:shape="ring"
+      android:thickness="3dp"
+      android:useLevel="false">
+      <solid android:color="@color/C19000000"/>
+    </shape>
+  </item>
+</layer-list>

+ 9 - 9
app/src/main/res/drawable/tab_white_active.xml

@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-  <item>
-    <shape
-        android:innerRadius="0dp"
-        android:shape="ring"
-        android:thickness="3dp"
-        android:useLevel="false">
-      <solid android:color="@color/CFFFFFF"/>
-    </shape>
-  </item>
+<item>
+  <shape
+    android:innerRadius="0dp"
+    android:shape="ring"
+    android:thickness="3dp"
+    android:useLevel="false">
+    <solid android:color="@color/CFFFFFF"/>
+  </shape>
+</item>
 </layer-list>

+ 4 - 2
app/src/main/res/layout/event_item_view.xml

@@ -4,7 +4,9 @@
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
-  android:layout_height="match_parent"
+  android:layout_height="wrap_content"
+  android:layout_marginStart="25dp"
+  android:layout_marginEnd="25dp"
   android:background="@drawable/rectangle_border_ce5e5e5"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintStart_toStartOf="parent">
@@ -14,12 +16,12 @@
     android:layout_width="0dp"
     android:layout_height="0dp"
     android:scaleType="centerCrop"
+    app:layout_constraintBottom_toTopOf="@+id/bottom_view"
     app:layout_constraintDimensionRatio="V, 311:311"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
     tools:src="@drawable/img_my_reservation"
-    app:layout_constraintBottom_toTopOf="@+id/bottom_view"
     />
 
   <android.support.constraint.ConstraintLayout

+ 16 - 12
app/src/main/res/layout/fragment_event.xml

@@ -6,29 +6,33 @@
   android:layout_width="match_parent"
   android:layout_height="match_parent">
 
-  <android.support.v7.widget.RecyclerView
+  <android.support.v4.view.ViewPager
     android:id="@+id/recycler_view_event"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:clipToPadding="false"
-    android:paddingStart="18dp"
-    android:paddingTop="14dp"
-    android:paddingEnd="18dp"
-    android:paddingBottom="88dp"
+    android:layout_height="match_parent"
+    android:layout_marginTop="14dp"
+    android:layout_marginBottom="88dp"
+    app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
     tools:background="@color/CE5E5E5"/>
 
-  <kr.co.zumo.app.lifeplus.view.screen.event.CustomIndicator
-    android:id="@+id/custom_indicator"
+  <android.support.design.widget.TabLayout
+    android:id="@+id/tab_layout_event"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_marginBottom="37dp"
+    android:layout_height="10dp"
+    android:layout_marginBottom="10dp"
     app:layout_constraintBottom_toBottomOf="parent"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
-    />
+    app:layout_constraintTop_toBottomOf="@+id/recycler_view_event"
+    app:tabBackground="@drawable/black_tab_selector"
+    app:tabGravity="center"
+    app:tabIndicatorHeight="0dp"
+    app:tabPaddingEnd="6dp"
+    app:tabPaddingStart="6dp"
+    tools:background="@color/C000000"/>
 
   <android.support.constraint.ConstraintLayout
     android:id="@+id/layout_my_event"