From 42262355695a72132c77b41aabde8a95ea494751 Mon Sep 17 00:00:00 2001 From: lunaticbum Date: Tue, 26 Nov 2024 16:52:07 +0900 Subject: [PATCH] =?UTF-8?q?=EA=B8=B0=EB=B3=B8=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../example/calrendarview/BaseCustomViews.kt | 44 ++++++++++++++----- .../java/com/example/calrendarview/DayView.kt | 33 +++++++------- .../com/example/calrendarview/MonthView.kt | 24 +++------- .../src/main/res/layout/item_day.xml | 14 ++++++ CalrendarView/src/main/res/values/attr.xml | 18 ++++++++ CalrendarView/src/main/res/values/values.xml | 4 ++ 6 files changed, 92 insertions(+), 45 deletions(-) create mode 100644 CalrendarView/src/main/res/layout/item_day.xml create mode 100644 CalrendarView/src/main/res/values/attr.xml create mode 100644 CalrendarView/src/main/res/values/values.xml diff --git a/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt b/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt index 2d9269e..6871235 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/BaseCustomViews.kt @@ -2,26 +2,48 @@ package com.example.calrendarview import android.content.Context import android.util.AttributeSet +import android.util.Log +import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout -class BaseCustomViews : View { - constructor(context: Context?) : super(context){appyAttrs(null)} - constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs){appyAttrs(attrs)} - constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( +abstract class BaseCustomViews : ConstraintLayout { + 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( context, attrs, defStyleAttr - ){appyAttrs(attrs)} + ){appyAttrs(context,attrs)} constructor( - context: Context?, + context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int - ) : super(context, attrs, defStyleAttr, defStyleRes) {appyAttrs(attrs)} - - - fun appyAttrs(attrs: AttributeSet?) { + ) : super(context, attrs, defStyleAttr, defStyleRes) {appyAttrs(context,attrs)} + 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) + } } -} \ No newline at end of file + + fun initLayout(context: Context?) { + createdLayout(LayoutInflater.from(context).inflate(layouId, this, true)) + } + + open fun createdLayout(view : View) { + Log.e(this::class.simpleName,"view si $view") + } + +// override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) { +// if (changed) { +// +// } +// } +} diff --git a/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt b/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt index 843505d..313d91f 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/DayView.kt @@ -1,28 +1,20 @@ package com.example.calrendarview import android.content.Context +import android.graphics.Canvas +import android.graphics.Color import android.util.AttributeSet import android.view.View -class DayView : View { - constructor(context: Context?) : super(context){appyAttrs(null)} - constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs){appyAttrs(attrs)} - constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( - context, - attrs, - defStyleAttr - ){appyAttrs(attrs)} - - constructor( - context: Context?, - attrs: AttributeSet?, - defStyleAttr: Int, - defStyleRes: Int - ) : super(context, attrs, defStyleAttr, defStyleRes) {appyAttrs(attrs)} +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) - fun appyAttrs(attrs: AttributeSet?) { - + override fun appyAttrs(context: Context?, attrs: AttributeSet?) { + super.appyAttrs(context, attrs) } fun displayDayNumber() { @@ -37,4 +29,11 @@ class DayView : View { return false } + + override fun draw(canvas: Canvas) { + canvas.drawColor(Color.CYAN) + super.draw(canvas) + + } + } diff --git a/CalrendarView/src/main/java/com/example/calrendarview/MonthView.kt b/CalrendarView/src/main/java/com/example/calrendarview/MonthView.kt index b27b75f..d09c900 100644 --- a/CalrendarView/src/main/java/com/example/calrendarview/MonthView.kt +++ b/CalrendarView/src/main/java/com/example/calrendarview/MonthView.kt @@ -6,25 +6,15 @@ import android.view.View import com.example.calrendarview.model.DayInfo -class MonthView : View { - constructor(context: Context?) : super(context){appyAttrs(null)} - constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs){appyAttrs(attrs)} - constructor(context: Context?, attrs: AttributeSet?, defStyleAttr: Int) : super( - context, - attrs, - defStyleAttr - ){appyAttrs(attrs)} - - constructor( - context: Context?, - attrs: AttributeSet?, - defStyleAttr: Int, - defStyleRes: Int - ) : super(context, attrs, defStyleAttr, defStyleRes) {appyAttrs(attrs)} +class MonthView : 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) - fun appyAttrs(attrs: AttributeSet?) { - + override fun appyAttrs(context: Context?, attrs: AttributeSet?) { + super.appyAttrs(context, attrs) } var numberOfRow : Int = 7 diff --git a/CalrendarView/src/main/res/layout/item_day.xml b/CalrendarView/src/main/res/layout/item_day.xml new file mode 100644 index 0000000..9ff8d05 --- /dev/null +++ b/CalrendarView/src/main/res/layout/item_day.xml @@ -0,0 +1,14 @@ + + + + + + \ No newline at end of file diff --git a/CalrendarView/src/main/res/values/attr.xml b/CalrendarView/src/main/res/values/attr.xml new file mode 100644 index 0000000..55e73fc --- /dev/null +++ b/CalrendarView/src/main/res/values/attr.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CalrendarView/src/main/res/values/values.xml b/CalrendarView/src/main/res/values/values.xml new file mode 100644 index 0000000..3261aff --- /dev/null +++ b/CalrendarView/src/main/res/values/values.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file