diff --git a/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt b/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt index 6871235..e3fef20 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt @@ -1,6 +1,7 @@ package com.example.calrendarview import android.content.Context +import android.content.res.TypedArray import android.util.AttributeSet import android.util.Log import android.view.LayoutInflater @@ -9,6 +10,7 @@ import android.view.ViewGroup import androidx.constraintlayout.widget.ConstraintLayout abstract class BaseCustomViews : ConstraintLayout { + protected val TAG = this:: class.simpleName constructor(context: Context) : super(context){appyAttrs(context,null)} constructor(context: Context, attrs: AttributeSet?) : super(context, attrs){appyAttrs(context,attrs)} constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( @@ -27,12 +29,15 @@ abstract class BaseCustomViews : ConstraintLayout { var layouId : Int = -1 open fun appyAttrs(context: Context?, attrs: AttributeSet?) { context?.let { - val typedArray = it.obtainStyledAttributes(attrs, R.styleable.BaseCustomViews) - layouId = typedArray.getResourceId(R.styleable.BaseCustomViews_item_layout,R.layout.item_day) - initLayout(it) + onTypedArray(it,it.obtainStyledAttributes(attrs, R.styleable.BaseCustomViews)) } } + open fun onTypedArray(context: Context, typedArray : TypedArray) { + layouId = typedArray.getResourceId(R.styleable.BaseCustomViews_item_layout,R.layout.item_day) + initLayout(context) + } + fun initLayout(context: Context?) { createdLayout(LayoutInflater.from(context).inflate(layouId, this, true)) } diff --git a/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt b/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt index 313d91f..3a1aa54 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt @@ -1,24 +1,79 @@ package com.example.calrendarview import android.content.Context +import android.content.res.TypedArray import android.graphics.Canvas import android.graphics.Color import android.util.AttributeSet +import android.util.Log import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.core.view.children +import com.example.calrendarview.model.DayInfo class DayView : BaseCustomViews { + constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) - constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) + constructor( + context: Context, + attrs: AttributeSet?, + defStyleAttr: Int, + defStyleRes: Int + ) : super(context, attrs, defStyleAttr, defStyleRes) - override fun appyAttrs(context: Context?, attrs: AttributeSet?) { - super.appyAttrs(context, attrs) + var dayInfo: DayInfo? = null + set(value) { + field = value + displayDayNumber() + } + + var numOfDayView : TextView? = null + var numberOfday : Int = -1 + set(value) { + Log.e(TAG, "numOfDayView 2 (${R.id.day_num}) Id >>>> ${value}") + field = value + numOfDayView = findViewById(field) + Log.e(TAG, "numOfDayView >>>> 3 ${numOfDayView}") + } + +// override fun appyAttrs(context: Context?, attrs: AttributeSet?) { +// context?.let { +// Log.e(TAG, "numOfDayView >>>> ${numOfDayView}") +// var typedArray = it.obtainStyledAttributes(attrs, R.styleable.BaseCustomViews) +// layouId = typedArray.getResourceId(R.styleable.BaseCustomViews_item_layout,R.layout.item_day).apply { +// Log.e(TAG, "layouId 0 (${R.layout.item_day} Id >>>> ${this}") +// } +// initLayout(context) +// +// } +// } + + override fun onTypedArray(context: Context, typedArray: TypedArray) { + super.onTypedArray(context, typedArray) + numberOfday = typedArray.getResourceId(R.styleable.BaseCustomViews_numOfDayId, R.id.day_num).apply { + Log.e(TAG, "numOfDayView 1 (${R.id.day_num}) Id >>>> ${this}") + } + displayDayNumber() + } + + override fun createdLayout(view: View) { + super.createdLayout(view) + (view as? ViewGroup)?.let { + it.children.forEach { Log.e(TAG,"child is ${it}") } + } } fun displayDayNumber() { - //todo 오늘 의 날짜를 표시 + numOfDayView?.text = dayInfo?.getDayOfNum()?.toString() ?: "TEST" + Log.e(TAG, "numOfDayView?.text >>>> 4 ${numOfDayView?.text}") } fun displayDayOfWeek() { @@ -29,11 +84,14 @@ class DayView : BaseCustomViews { return false } - - override fun draw(canvas: Canvas) { - canvas.drawColor(Color.CYAN) - super.draw(canvas) - + override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { + super.onMeasure(widthMeasureSpec, heightMeasureSpec) + Log.e(TAG,"View >>> ${this}") } +// override fun draw(canvas: Canvas) { +// super.draw(canvas) +// canvas.drawColor(Color.CYAN) +// } + } diff --git a/CalrendarView/src/main/java/com/example/calrendarview/model/DayInfo.kt b/CalrendarView/src/main/java/com/example/calrendarview/model/DayInfo.kt index e90d09f..4d0acbd 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/model/DayInfo.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/model/DayInfo.kt @@ -2,7 +2,7 @@ package com.example.calrendarview.model interface DayInfo { - fun getDayOfNum() - fun getDayOfWeek() - fun isToday() + fun getDayOfNum() : Int + fun getDayOfWeek() : Int + fun isToday() : Boolean } \ No newline at end of file diff --git a/CalrendarView/src/main/res/layout/item_day.xml b/CalrendarView/src/main/res/layout/item_day.xml index 9ff8d05..6a61aaa 100644 --- a/CalrendarView/src/main/res/layout/item_day.xml +++ b/CalrendarView/src/main/res/layout/item_day.xml @@ -3,12 +3,15 @@ android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> + + - \ No newline at end of file diff --git a/CalrendarView/src/main/res/values/attr.xml b/CalrendarView/src/main/res/values/attr.xml index 55e73fc..34c2e06 100644 --- a/CalrendarView/src/main/res/values/attr.xml +++ b/CalrendarView/src/main/res/values/attr.xml @@ -2,14 +2,16 @@ - + + +