-
Notifications
You must be signed in to change notification settings - Fork 2
Upload 감정선택
NaHui999 edited this page Jan 15, 2021
·
2 revisions
-
8가지 감정 버튼을 가지고, 해당 날짜를 가진 뷰
-
UploadFeeling 으로 들어올 때
1.오늘 일기가 없는 경우
=> 자동으로 날짜가 현재로 잡히며, 오늘의 일기 작성 가능
2.오늘 일기가 있는 경우(일기가 다른 날로 잡혀야 함.)
=> 뷰가 넘어오는 동시에 날짜 선택 모달이 올라옴.
화면 날짜와 데이트 피커 날짜 모두 일기를 안 쓴 가장 최근 날짜로 설정됨.
-구현 : 서버에서 안쓴 가장 최근 날짜 받아옴. 현재 날짜와 비교.
찾아볼 날짜에 대해 서버에서 읽기 정보가 있는지 확인해 버튼 활성화.
Activity.kt 의 서버연동
//안쓴 날짜중 가장 최근날 가져오는것
private fun loadRecentData(){
RequestToServer.service.getRecentNoWrite(
Authorization = SharedPreferenceController.getAccessToken(this),
userId = SharedPreferenceController.getUserId(this)
).enqueue(object:retrofit2.Callback<ResponseRecentWriteData> {
override fun onResponse(
call: Call<ResponseRecentWriteData>,
response: Response<ResponseRecentWriteData>
) {
when {
response.code() == 200 -> {
Log.d("recentData 200","통신 가능")
val no_data_day=response.body()!!.data
// string to date
setDate(no_data_day)
openDateModal()
}
response.code() == 400 -> {
Log.d("recentData 401", response.message())
}
else -> {
Log.d("recentData 500", response.message())
}
}
}
override fun onFailure(call: Call<ResponseRecentWriteData>, t: Throwable) {
Log.d("recentData_fail", "fail : ${t.message}")
}
})
}
private fun setDate(no_data_day: String) {
val dateformat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").parse(no_data_day)
val diary_day = SimpleDateFormat("yyyy. MM. dd. EEEE", Locale.KOREA).format(dateformat)
upload_year = SimpleDateFormat("yyyy", Locale.KOREA).format(dateformat).toInt()
upload_month = SimpleDateFormat("MM", Locale.KOREA).format(dateformat).toInt()
upload_date = SimpleDateFormat("dd", Locale.KOREA).format(dateformat).toInt()
val week=SimpleDateFormat("EEEE",Locale.KOREA).format(dateformat)
val month= getMonth(upload_month)
val date= getDate(upload_date)
binding.tvDate.text="${upload_year}. ${month}. ${date}. ${week}"
upload_wroteAt = "${upload_year}"+"-"+"${month}"+"-"+"${date}"
Log.d("upload_identify", "$upload_month"+" "+ "$upload_date")
Log.d("upload_wroteAt","$upload_wroteAt")
}
- 날짜 선택 모달
-경우 : 오늘의 일기가 있는 경우 자동으로 올라 옴. 캘린더 버튼 클릭
-구현 : bottomSheet_diary_edit_date.xml로 올릴 모달의 형태를 잡고, UploadDateBottomSheetFragment라는 Fragment를 만들어, Activity에서 사용.
Activity.kt
private fun openDateModal(){
//그리고 모달을 띄운다.
val fragEditDate = UploadDateBottomSheetFragment {
// picker 에서 가져온 날짜를 다이어리에 띄워준다
val pickerDate = "${it[0]}${getMonth(it[1])}${getDate(it[2])}"
val dayFormat = SimpleDateFormat("yyyyMMdd", Locale.KOREA).parse(pickerDate)
val pickerDay = SimpleDateFormat("EEEE", Locale.KOREA).format(dayFormat)
binding.tvDate.text = "${it[0]}. ${getMonth(it[1])}. ${getDate(it[2])}. $pickerDay"
upload_year = it[0]
upload_month = it[1]
upload_date = it[2]
upload_wroteAt = "${it[0]}-${getMonth(it[1])}-${getDate(it[2])}"
}
fragEditDate.show(supportFragmentManager, fragEditDate.tag)
}
- 감정 선택
사랑:1 , 행복: 2, 위로: 3 .... 의 순서로 feeling의 값을 주고 intent에 보냄. 이에 맞는 처리
- 버튼에 그림자 처리
-neumorphism 라이브러리 사용
-구현: xml에서
<soup.neumorphism.NeumorphCardView
android:id="@+id/neumorphCardView"
android:layout_width="0dp"
android:layout_height="0dp"
android:padding="6dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
app:layout_constraintDimensionRatio="1:0.65"
app:layout_constraintEnd_toStartOf="@+id/neumorphCardView2"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintHorizontal_chainStyle="packed"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintWidth_percent="0.42"
app:neumorph_backgroundColor="#FFFFFF"
app:neumorph_insetBottom="6dp"
app:neumorph_insetEnd="8dp"
app:neumorph_insetStart="0dp"
app:neumorph_insetTop="0dp"
app:neumorph_lightSource="leftTop"
app:neumorph_shadowColorDark="@color/gray_shadow"
app:neumorph_shadowColorLight="#FFFFFF"
app:neumorph_shadowElevation="4dp"
app:neumorph_shapeAppearance="@style/CustomShapeAppearance"
app:neumorph_shapeType="flat">