Browse Source

[마이][Common] 마이이벤트 화면 구현

Hasemi 7 years ago
parent
commit
af520f6098

+ 4 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/Event.java

@@ -127,6 +127,8 @@ public class Event {
   public static final int NEXT = 99;
   public static final int REFRESH = 100;
   public static final int MY_EVENT = 101;
+  public static final int ING_EVENT = 102;
+  public static final int WINNER_ANNOUNCEMENT = 103;
 
 
   @Retention(RetentionPolicy.SOURCE)
@@ -139,7 +141,8 @@ public class Event {
     ACTION_BAR_SEARCH, ACTION_BAR_MENU, ACTION_BAR_TITLE, FIRST_CATEGORY, SECOND_CATEGORY, THIRD_CATEGORY, FOURTH_CATEGORY, FIFTH_CATEGORY,
     SWITCH, BOOK_MARK_DEFAULT, BOOK_MARK_LIST, ADD, MY_COIN_MAIN, MY_PURCHASE_HISTORY, GUIDE, ADD_BUCKET, MY_MAIN_GUEST, COUPON_MALL, CATEGORY_CLICK,
     MY_FAQ, UPDATE, FILTER, CLOSE, HELP, CONTENTS, MORE, BANNER, RECOMMEND, KAKAO_TALK, FACE_BOOK, CODE_COPY, EVENT, TAG, BOOKMARK, ORDER, DEFAULT, COMPLETE_BUCKET,
-    LIKE, FRAGMENT_STACK_EMPTY, OVER_VIEW, SHARE, CALL_INFO, LINK, HOME_PAGE, INSTAGRAM, ADDRESS, SCROLL, SORT, TUTORIAL, CLICK_HTML, LAST, PREV, NEXT, REFRESH , MY_EVENT
+    LIKE, FRAGMENT_STACK_EMPTY, OVER_VIEW, SHARE, CALL_INFO, LINK, HOME_PAGE, INSTAGRAM, ADDRESS, SCROLL, SORT, TUTORIAL, CLICK_HTML, LAST, PREV, NEXT, REFRESH , MY_EVENT ,
+    ING_EVENT, WINNER_ANNOUNCEMENT
 
   })
   public @interface ID {}

+ 59 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/event/MyEventAdapter.java

@@ -0,0 +1,59 @@
+package kr.co.zumo.app.lifeplus.view.screen.my.event;
+
+import android.content.Context;
+import android.support.annotation.NonNull;
+import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.IEventListener;
+
+/**
+ * MyEventAdapter
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2019-01-02]   [최초 작성]
+ * @since 2019-01-02
+ */
+public class MyEventAdapter extends RecyclerView.Adapter<MyEventViewHolder> {
+
+  private Context context;
+  private LayoutInflater inflater;
+  private IEventListener listener;
+
+  public MyEventAdapter(Context context, IEventListener listener) {
+    this.context = context;
+    this.listener = listener;
+    this.inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+  }
+
+  @NonNull
+  @Override
+  public MyEventViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+    View view = inflater.inflate(R.layout.my_event_view, parent, false);
+    return new MyEventViewHolder(context, view);
+  }
+
+  @Override
+  public void onBindViewHolder(@NonNull MyEventViewHolder holder, int position) {
+    holder.init(new IEventListener() {
+      @Override
+      public void onEvent(Event event) {
+        if (null != listener) {
+          listener.onEvent(event);
+        }
+      }
+    });
+  }
+
+  @Override
+  public int getItemCount() {
+    return 10;
+  }
+}

+ 32 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/event/MyEventFragment.java

@@ -1,14 +1,21 @@
 package kr.co.zumo.app.lifeplus.view.screen.my.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.RecyclerView;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
 import kr.co.zumo.app.R;
 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.IEventListener;
 import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 
 /**
@@ -22,6 +29,10 @@ import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
  * @since 2019-01-02
  */
 public class MyEventFragment extends FragmentBase<MyEventPresenter> {
+
+  private RecyclerView recyclerViewMyEvent;
+  private ConstraintLayout buttonIngEvent;
+
   @Override
   protected View onAfterCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     return inflater.inflate(R.layout.fragment_my_event, container, false);
@@ -29,7 +40,28 @@ public class MyEventFragment extends FragmentBase<MyEventPresenter> {
 
   @Override
   protected void onAfterActivityCreated(Bundle savedInstanceState) {
+    recyclerViewMyEvent = findViewById(R.id.recycler_view_my_event);
+    buttonIngEvent = findViewById(R.id.button_ing_event);
 
+    MyEventAdapter myEventAdapter = new MyEventAdapter(getActivity(), new IEventListener() {
+      @Override
+      public void onEvent(Event event) {
+        presenter.onEvent(event);
+      }
+    });
+    recyclerViewMyEvent.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
+    recyclerViewMyEvent.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(25);
+        outRect.right = ResourceUtil.dpToPx(25);
+        outRect.bottom = ResourceUtil.dpToPx(11);
+        outRect.top = ResourceUtil.dpToPx(11);
+      }
+    });
+    recyclerViewMyEvent.setAdapter(myEventAdapter);
+    buttonIngEvent.setOnClickListener(view -> {presenter.onEvent(new Event.Builder(Event.ING_EVENT).build());});
   }
 
   @Override

+ 10 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/event/MyEventPresenter.java

@@ -70,7 +70,16 @@ public class MyEventPresenter extends Presenter<MyEventModel, IView> {
 
   @Override
   protected void onEventInternal(Event event) {
-
+    switch (event.getEventId()) {
+      case Event.ING_EVENT:
+        //진행중인 이벤트
+        break;
+      case Event.WINNER_ANNOUNCEMENT:
+        //당첨자 발표
+        break;
+      default:
+        break;
+    }
   }
 
   @Override

+ 59 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/my/event/MyEventViewHolder.java

@@ -0,0 +1,59 @@
+package kr.co.zumo.app.lifeplus.view.screen.my.event;
+
+import android.content.Context;
+import android.support.constraint.ConstraintLayout;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.IEventListener;
+
+/**
+ * MyEventViewHolder
+ * <pre>
+ * </pre>
+ *
+ * @author 하세미
+ * @version 1.0
+ * @history 하세미   [2019-01-02]   [최초 작성]
+ * @since 2019-01-02
+ */
+public class MyEventViewHolder extends RecyclerView.ViewHolder {
+
+  private ImageView imageViewEvent;
+  private TextView textViewTitle;
+  private TextView textViewDateInfo;
+  private TextView textViewShowWinner;
+  private ImageView imageViewShowWinner;
+  private ConstraintLayout layoutEndFlag;
+
+  public MyEventViewHolder(Context context, View itemView) {
+    super(itemView);
+    imageViewEvent = itemView.findViewById(R.id.image_view_my_event);
+    textViewTitle = itemView.findViewById(R.id.text_view_title);
+    textViewDateInfo = itemView.findViewById(R.id.text_view_date);
+    textViewShowWinner = itemView.findViewById(R.id.text_view_winner);
+    imageViewShowWinner = itemView.findViewById(R.id.image_view_arrow);
+    layoutEndFlag = itemView.findViewById(R.id.event_flag);
+  }
+
+  public void init(IEventListener listener) {
+
+    textViewShowWinner.setOnClickListener(view -> {
+      if (null != listener) {
+        listener.onEvent(new Event.Builder(Event.WINNER_ANNOUNCEMENT).build());
+      }
+
+    });
+
+    imageViewShowWinner.setOnClickListener(view -> {
+      if (null != listener) {
+        listener.onEvent(new Event.Builder(Event.WINNER_ANNOUNCEMENT).build());
+      }
+
+    });
+  }
+}

+ 4 - 0
app/src/main/res/drawable/icon_winner_more.xml

@@ -0,0 +1,4 @@
+<vector android:height="11dp" android:viewportHeight="42"
+    android:viewportWidth="42" android:width="11dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#C5C5C5" android:fillType="nonZero" android:pathData="M16.435,7.828L19.263,5l16.264,16.263 -16.264,16.264 -2.828,-2.829L29.87,21.263z"/>
+</vector>

+ 32 - 1
app/src/main/res/layout/fragment_my_event.xml

@@ -1,10 +1,41 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout
   xmlns:android="http://schemas.android.com/apk/res/android"
+  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.support.v7.widget.RecyclerView
+    android:id="@+id/recycler_view_my_event"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
+    android:layout_height="0dp"
+    tools:background="@color/CC5C5C5"
+    app:layout_constraintTop_toTopOf="parent"
+    app:layout_constraintBottom_toTopOf="@+id/button_ing_event"/>
+
+  <android.support.constraint.ConstraintLayout
+    android:id="@+id/button_ing_event"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="@color/C000000"
+    app:layout_constraintBottom_toBottomOf="parent">
+
+    <TextView
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:layout_marginTop="11dp"
+      android:layout_marginBottom="11dp"
+      android:gravity="center_horizontal"
+      android:lineSpacingExtra="6sp"
+      android:text="@string/event_ing"
+      android:textColor="@color/CFFFFFF"
+      android:textSize="16sp"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintTop_toTopOf="parent"
+      />
+
+  </android.support.constraint.ConstraintLayout>
 </android.support.constraint.ConstraintLayout>

+ 97 - 0
app/src/main/res/layout/my_event_view.xml

@@ -0,0 +1,97 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout
+  xmlns:android="http://schemas.android.com/apk/res/android"
+  xmlns:app="http://schemas.android.com/apk/res-auto"
+  xmlns:tools="http://schemas.android.com/tools"
+  android:layout_width="match_parent"
+  android:layout_height="wrap_content">
+
+  <ImageView
+    android:id="@+id/image_view_my_event"
+    android:layout_width="124dp"
+    android:layout_height="93dp"
+    android:scaleType="centerCrop"
+    android:src="@drawable/img_bestbucket_banner_1"
+    app:layout_constraintBottom_toBottomOf="parent"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toTopOf="parent"/>
+
+  <TextView
+    android:id="@+id/text_view_title"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginStart="15dp"
+    android:layout_marginTop="4dp"
+    android:layout_marginBottom="3dp"
+    android:lineSpacingExtra="5.5sp"
+    android:text="샤갈 러브 앤 라이프\n전시회 티켓 증정"
+    android:textColor="@color/C000000"
+    android:textSize="14sp"
+    app:layout_constraintBottom_toTopOf="@+id/text_view_date"
+    app:layout_constraintStart_toEndOf="@+id/image_view_my_event"
+    app:layout_constraintTop_toTopOf="parent"/>
+
+  <TextView
+    android:id="@+id/text_view_date"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="3dp"
+    android:layout_marginBottom="3dp"
+    android:lineSpacingExtra="4sp"
+    android:text="2018. 12. 30 종료"
+    android:textColor="@color/C999999"
+    android:textSize="11sp"
+    app:layout_constraintBottom_toTopOf="@+id/text_view_winner"
+    app:layout_constraintStart_toStartOf="@+id/text_view_title"
+    app:layout_constraintTop_toBottomOf="@+id/text_view_title"/>
+
+  <TextView
+    android:id="@+id/text_view_winner"
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content"
+    android:layout_marginTop="3dp"
+    android:layout_marginBottom="3dp"
+    android:lineSpacingExtra="3.5sp"
+    android:text="당첨자 발표"
+    android:textColor="@color/CC5C5C5"
+    android:textSize="12sp"
+    app:layout_constraintBottom_toBottomOf="parent"
+    app:layout_constraintStart_toStartOf="@+id/text_view_title"
+    app:layout_constraintTop_toBottomOf="@+id/text_view_date"/>
+
+  <ImageView
+    android:id="@+id/image_view_arrow"
+    android:layout_width="wrap_content"
+    android:layout_height="match_parent"
+    app:layout_constraintBottom_toBottomOf="@+id/text_view_winner"
+    app:layout_constraintStart_toEndOf="@+id/text_view_winner"
+    app:layout_constraintTop_toTopOf="@+id/text_view_winner"
+    app:srcCompat="@drawable/icon_winner_more"
+    />
+
+  <android.support.constraint.ConstraintLayout
+    android:id="@+id/event_flag"
+    android:layout_width="25dp"
+    android:layout_height="16dp"
+    android:layout_marginStart="6dp"
+    android:layout_marginTop="6dp"
+    android:background="@color/C000000"
+    app:layout_constraintStart_toStartOf="parent"
+    app:layout_constraintTop_toTopOf="parent">
+
+    <TextView
+      android:id="@+id/end_flag"
+      android:layout_width="wrap_content"
+      android:layout_height="wrap_content"
+      android:lineSpacingExtra="4sp"
+      android:text="종료"
+      android:textAlignment="center"
+      android:textColor="@color/CFFFFFF"
+      android:textSize="9sp"
+      app:layout_constraintBottom_toBottomOf="parent"
+      app:layout_constraintEnd_toEndOf="parent"
+      app:layout_constraintStart_toStartOf="parent"
+      app:layout_constraintTop_toTopOf="parent"
+      />
+  </android.support.constraint.ConstraintLayout>
+</android.support.constraint.ConstraintLayout>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -567,6 +567,8 @@
   <string name="series">시리즈</string>
 
   <string name="event">이벤트</string>
+  <string name="event_ing">진행중인 이벤트</string>
+  <string name="winner_announcement">당첨자 발표</string>
   <string name="show_event">이벤트 보기</string>
   <string name="event_date">2018.08.13. 11:24</string>
   <string name="event_title">디뮤지엄 전시회 티켓 증정 이벤트</string>