Skip to content

Commit

Permalink
[MIN-52] feat : 스토리 캘린더 뷰 전환 구현 (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
KDW03 committed Mar 8, 2023
1 parent 4ea6175 commit 972379b
Show file tree
Hide file tree
Showing 24 changed files with 446 additions and 16 deletions.
1 change: 1 addition & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#00000000"
android:paddingHorizontal="8dp"
app:elevation="0dp">

<com.google.android.material.appbar.MaterialToolbar
Expand Down
1 change: 0 additions & 1 deletion common-ui/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,6 @@ dependencies {
implementation 'com.github.bumptech.glide:glide:4.14.2'
kapt 'com.github.bumptech.glide:compiler:4.14.2'


implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.najudoryeong.mineme.common_ui

import android.os.Bundle
import android.util.Log
import android.view.*
import androidx.core.view.MenuHost
import androidx.core.view.MenuProvider
Expand All @@ -18,6 +19,7 @@ abstract class BaseFragment<T : ViewDataBinding>(val fragment: FragmentInfoUtil)
abstract fun initView()

open fun menuClick(){}
open fun backClick() : Boolean = false

override fun onCreateView(
inflater: LayoutInflater,
Expand Down Expand Up @@ -71,7 +73,9 @@ abstract class BaseFragment<T : ViewDataBinding>(val fragment: FragmentInfoUtil)
with(navController) {
when (menuItem.itemId) {
android.R.id.home -> {
popBackStack()
if (!backClick()){
popBackStack()
}
}
else -> {
menuClick()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import com.bumptech.glide.Glide
fun bindImageView(imageView: ImageView, photoUrl: String?) {
Glide.with(imageView.context)
.load(photoUrl)
.placeholder(R.drawable.img_profile)
.placeholder(R.drawable.img_no_img)
.into(imageView)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class CalendarUtil {
companion object {

private val dateFormat = SimpleDateFormat("yyyy-MM-dd", Locale.KOREA)
private val dateFormatNoDay = SimpleDateFormat("yyyy-MM", Locale.KOREA)

private fun Calendar.getYear() = get(Calendar.YEAR)
private fun Calendar.getMonth() = get(Calendar.MONTH)+1
Expand All @@ -19,13 +20,22 @@ class CalendarUtil {
return "${it.getYear()}-${it.getMonth()}-${it.getDay()}"
}

fun getTodayDateNoDay() : String = Calendar.getInstance().let {
return "${it.getYear()}-${it.getMonth()}"
}

// private fun getDateFormat(year : String, month: String, day: String) : String = "${year} ${getMonthFormat(month)}"

fun DatePicker.getDate() = "$year-${month+1}-$dayOfMonth"

fun DatePicker.getDateNoDay() = "$year-${month+1}"

fun parseStringToDate(textView: TextView): Date? =
dateFormat.parse(textView.text.toString())

fun parseStringToDateNoDay(textView: TextView):Date? =
dateFormatNoDay.parse(textView.text.toString()+"-01")

fun getMonthFormat(month: String): String {
return when (month.toInt()) {
Calendar.FEBRUARY -> "Feb"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,11 @@ package com.najudoryeong.mineme.common_ui

import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import com.najudoryeong.mineme.common_ui.CalendarUtil.Companion.getDate
import com.najudoryeong.mineme.common_ui.databinding.DialogForDatepickerBinding
import java.util.*
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
package com.najudoryeong.mineme.common_ui

import android.annotation.SuppressLint
import android.app.Dialog
import android.content.Context
import android.content.res.Resources
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import android.widget.NumberPicker
import com.najudoryeong.mineme.common_ui.CalendarUtil.Companion.getDateNoDay
import com.najudoryeong.mineme.common_ui.databinding.DialogForDatepickerBinding
import java.util.*

class DialogForDatePickerNoDay(
context: Context,
private val initDate: Date,
private val onClickPositiveButton: (String) -> Unit
) : Dialog(context) {
private lateinit var binding: DialogForDatepickerBinding
private var calendar: Calendar = Calendar.getInstance()

init {
calendar.time = initDate
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = DialogForDatepickerBinding.inflate(layoutInflater).apply {
datePicker.init(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),1,null)

val daySpinnerId = Resources.getSystem().getIdentifier("day", "id", "android")
val daySpinner = datePicker.findViewById<NumberPicker>(daySpinnerId)
daySpinner.visibility = View.GONE
positiveButton.setOnClickListener {
onClickPositiveButton.invoke(datePicker.getDateNoDay())
dismiss()
}
negativeButton.setOnClickListener {
dismiss()
}
}
setContentView(binding.root)

window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
}

class Builder(private val context: Context) {
private lateinit var initDate: Date
private var onClickPositiveButton : (String) -> Unit = {}


fun setInitDate(initDate: Date) = apply {
this.initDate = initDate
}

fun setOnClickPositiveButton(onClickPositiveButton: (String) -> Unit) = apply {
this.onClickPositiveButton = onClickPositiveButton
}


fun build() = DialogForDatePicker(
context,
initDate,
onClickPositiveButton
)
}
}
Binary file added common-ui/src/main/res/drawable/img_no_img.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions common-ui/src/main/res/values/colors.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@
<color name="soft_text_color">#505050</color>
<color name="butter">#FFDB94</color>
<color name="kakao">#FFE55F</color>
<color name="white">#FFFFFF</color>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ interface HomeService {

@GET("api/test/main/info")
suspend fun readHomeInfo(
@Header("Authorization") token: String,
@Header("Authorization") token: String
): CommonResponse<HomeData>


Expand Down
4 changes: 4 additions & 0 deletions story/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ dependencies {
implementation "com.google.dagger:hilt-android:$rootProject.hiltVersion"
kapt "com.google.dagger:hilt-android-compiler:$rootProject.hiltVersion"


implementation 'de.hdodenhof:circleimageview:3.1.0'


implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.0'
implementation 'com.google.android.material:material:1.8.0'
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.najudoryeong.mineme.story

import android.graphics.Color
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.najudoryeong.mineme.story.databinding.ItemCalendarBinding
import com.najudoryeong.mineme.story.domain.entity.CalendarData

class CalendarAdapter(private val dataList: Array<CalendarData>) :
RecyclerView.Adapter<CalendarAdapter.ViewHolder>() {

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
return ViewHolder(
ItemCalendarBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}

override fun getItemCount(): Int {
Log.d("datasize", dataList.size.toString())
return dataList.size
}


override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val item = dataList[position]
holder.bind(item)
}

inner class ViewHolder(private val binding: ItemCalendarBinding) :
RecyclerView.ViewHolder(binding.root) {
fun bind(calendarData: CalendarData) {

if (calendarData.day.toIntOrNull() == null) {
binding.image.visibility = View.GONE
} else {
binding.date.setTextColor(Color.parseColor("#FFFFFF"))
if (calendarData.data != null) {
binding.imgUrl = calendarData.data.imageUrl
}
}
binding.date.text = calendarData.day
}
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.najudoryeong.mineme.story.domain.entity

data class CalendarData(
val day : String,
val data :CalendarItemData?
)

data class CalendarItemData(
val postId: Int,
val imageUrl: String
)
Loading

0 comments on commit 972379b

Please sign in to comment.