浏览代码

[이벤트][Common] 이벤트 셀렉트뷰 구현

Hasemi 6 年之前
父节点
当前提交
7bad6cd1cf

+ 49 - 11
app/src/main/java/kr/co/zumo/app/lifeplus/view/custom/event/EventCombinedTwoLineSelectView.java

@@ -1,9 +1,12 @@
 package kr.co.zumo.app.lifeplus.view.custom.event;
 
+import android.annotation.SuppressLint;
 import android.content.Context;
+import android.support.annotation.Nullable;
 import android.support.constraint.ConstraintLayout;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.widget.Checkable;
 import android.widget.TextView;
 
@@ -21,53 +24,88 @@ import kr.co.zumo.app.R;
  */
 public class EventCombinedTwoLineSelectView extends ConstraintLayout implements Checkable {
 
+  private Context context;
   private ConstraintLayout layoutBackground;
   private TextView textViewTitle;
   private TextView textViewSubTitle;
+  private boolean isChecked;
   private OnClickListener listener;
 
   public EventCombinedTwoLineSelectView(Context context) {
     super(context);
+    this.context = context;
+    init(context);
+    attachEvent();
   }
 
   public EventCombinedTwoLineSelectView(Context context, AttributeSet attrs) {
     super(context, attrs);
+    this.context = context;
+    init(context);
+    attachEvent();
   }
 
   public EventCombinedTwoLineSelectView(Context context, AttributeSet attrs, int defStyleAttr) {
     super(context, attrs, defStyleAttr);
+    this.context = context;
+    init(context);
+    attachEvent();
   }
 
 
-  public void init(Context context, String title, String subTitle) {
+  public void init(Context context) {
     if (null != context) {
       LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       inflater.inflate(R.layout.event_combined_two_line_select_view, this);
       layoutBackground = findViewById(R.id.layout_background);
-      textViewTitle = findViewById(R.id.text_view_sub_title);
-      textViewSubTitle = findViewById(R.id.check_box);
+      textViewTitle = findViewById(R.id.text_view_title);
+      textViewSubTitle = findViewById(R.id.text_view_sub_title);
 
+    }
+  }
 
-      layoutBackground.setOnClickListener(view -> {
-        if (null != listener) {
-          listener.onClick(this);
-        }
-      });
+  public void setContents(String title, @Nullable String subTitle) {
+    textViewTitle.setText(title);
+    if (null != subTitle) {
+      textViewSubTitle.setText(subTitle);
+    }
+    else {
+      textViewSubTitle.setVisibility(GONE);
     }
+
+
   }
 
-  @Override
-  public void setChecked(boolean b) {
 
+  @SuppressLint("ClickableViewAccessibility")
+  public void attachEvent() {
+    this.setOnTouchListener((v, event) -> {
+      if (event.getAction() == MotionEvent.ACTION_DOWN) {
+        setChecked(!isChecked);
+        upgradeView(isChecked());
+      }
+      return false;
+    });
+  }
+
+  @Override
+  public void setChecked(boolean isChecked) {
+    this.isChecked = isChecked;
   }
 
   @Override
   public boolean isChecked() {
-    return false;
+    return isChecked;
   }
 
   @Override
   public void toggle() {
 
   }
+
+  private void upgradeView(boolean isChecked) {
+    layoutBackground.setBackgroundResource(isChecked ? R.drawable.event_two_line_check_on : R.drawable.event_two_line_check_off);
+    textViewTitle.setTextColor(isChecked ? context.getResources().getColor(R.color.C333333) : context.getResources().getColor(R.color.CFFFFFF));
+    textViewSubTitle.setTextColor(isChecked ? context.getResources().getColor(R.color.C999999) : context.getResources().getColor(R.color.CC3C3C3));
+  }
 }

+ 0 - 5
app/src/main/res/drawable/event_select_view_two_line_selector.xml

@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-  <item android:drawable="@drawable/rectangle_cffffff_radius_27" android:state_checked="true"/>
-  <item android:drawable="@drawable/rectangle_transparent_radius_27" android:state_checked="false"/>
-</selector>

app/src/main/res/drawable/rectangle_transparent_radius_27.xml → app/src/main/res/drawable/event_two_line_check_off.xml


app/src/main/res/drawable/rectangle_cffffff_radius_27.xml → app/src/main/res/drawable/event_two_line_check_on.xml


+ 8 - 5
app/src/main/res/layout/event_combined_two_line_select_view.xml

@@ -1,13 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <android.support.constraint.ConstraintLayout
-  android:id="@+id/layout_background"
   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:id="@+id/layout_background"
   android:layout_width="212dp"
   android:layout_height="54dp"
-  tools:background="@drawable/rectangle_transparent_radius_27"
-  android:background="@drawable/rectangle_transparent_radius_27">
+  android:background="@drawable/event_two_line_check_off"
+  tools:background="@color/C333333">
 
   <TextView
     android:id="@+id/text_view_title"
@@ -21,13 +21,15 @@
     android:lineSpacingExtra="4sp"
     android:singleLine="true"
     android:textAlignment="center"
-    android:textColor="@color/C000000"
+    android:textColor="@color/CFFFFFF"
     android:textSize="12sp"
     app:layout_constrainedWidth="true"
     app:layout_constraintBottom_toTopOf="@+id/text_view_sub_title"
     app:layout_constraintEnd_toEndOf="parent"
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toTopOf="parent"
+    app:layout_goneMarginBottom="0dp"
+    app:layout_goneMarginTop="0dp"
     tools:text="#매콤매콤한 소스의 닭요리#매콤매콤한 소스의 닭요리#매콤매콤한 소스의 닭요리#매콤매콤한 소스의 닭요리#매콤매콤한 소스의 닭요리#매콤매콤한 소스의 닭요리"
     />
 
@@ -43,7 +45,7 @@
     android:lineSpacingExtra="4sp"
     android:singleLine="true"
     android:textAlignment="center"
-    android:textColor="@color/C999999"
+    android:textColor="@color/CC3C3C3"
     android:textSize="11sp"
     app:layout_constrainedWidth="true"
     app:layout_constraintBottom_toBottomOf="parent"
@@ -51,5 +53,6 @@
     app:layout_constraintStart_toStartOf="parent"
     app:layout_constraintTop_toBottomOf="@+id/text_view_title"
     tools:text="특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!특별한 소스와 건강을 책임지는 요리!"
+    tools:visibility="gone"
     />
 </android.support.constraint.ConstraintLayout>

+ 2 - 0
app/src/main/res/layout/event_enter_type_select_view_item.xml

@@ -47,6 +47,8 @@
     android:layout_marginEnd="5dp"
     android:background="@null"
     android:button="@null"
+    android:textAlignment="textStart"
+    android:drawableLeft="@drawable/radio_selector"
     android:drawablePadding="8dp"
     android:includeFontPadding="false"
     android:gravity="center"