Skip to content

Upload 감정선택

NaHui999 edited this page Jan 15, 2021 · 2 revisions

Upload 감정선택

  • 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">