업데이트:

카테고리:

/

태그: ,

UI

사이즈

  • sp: 크기 독립적 화소
  • dp: 밀도 독립적 화소
  • px: 화면의 화소수

화면에 크기에 따라 자동으로 조정되므로 크기에 따라 일일히 조정해줄 필요가 없다.

주로 맨위 컴포넌트는 상단와 8, 16dp 정도 떨어져 있다.

컬러

values > colors.xml에 내가 원하는 컬러를 저장해놓을 수 있다.
전역으로 관리한다면 이 파일을 사용해보자
color를 지정하는 곳에서 내가 정한 이름으로 편하게 찾을 수 있다.

layout

  • ConstrantLayout
  • LinearLayout: 모든 아이템이 순서대로 정렬
    • gravity: 요소들의 정렬방식을 설정, 두 가지의 요소를 쓰고 싶다면 right | bottom처럼 ‘ ‘를 이용하여 작성하면 된다.
    • orientation: 화면을 어떻게 보일지 정렬, 아이템들이 겹치지 않고 어떻게 보일지 결정함
      • 여러개의 LinearLayout 설정시 필요하다.

컴파일 오류 Dependency ‘androidx appcompat:appcompat-resources:1.6.0’ requires libraries and applications that depend on it to compile against version 33 or later of the Android APIs.
파일을 실행하려고 보니 해당 오류가 발생하였다.
이 오류는 사용하는 SDK와 라이브러리 간 버전이 맞지않아 발생하는 문제였다.
build.gradle파일에서 complieSDK을 33이상으로 설정하면 해결된다.

DatePicker

  • Calendar
  • DatePickerDialog
  • SimpleDateFormat
      private fun clickDatePicker() {
          // 캘린터 인스턴스를 가져옴
          val myCalendar = Calendar.getInstance()
          val year = myCalendar.get(Calendar.YEAR)
          val month = myCalendar.get(Calendar.MONTH)
          val day = myCalendar.get(Calendar.DAY_OF_MONTH)
          // 년도, 월, 일이 필요하다
          val dpd = DatePickerDialog(this,
              /* DatePicker가 전달한 매개gi 변수
                 DatePickerDialog.OnDateSetListener은 삭제해도 된다.
                 코드 내부적으로 해당 코드가 어떤 내용인지 알고 있다. */
              DatePickerDialog.OnDateSetListener{ view, selectedYear, selectedMonth, selectedDayOfMonth ->
                  // 날짜를 선택한 경우에만 표시됨
                  Toast.makeText(this, "Year was $selectedYear, Month was ${selectedMonth + 1}, day of month was $selectedDayOfMonth", Toast.LENGTH_LONG).show()
    
                  // 텍스트 뷰의 날짜 설정
                  val selectedDate = "$selectedYear/${selectedMonth+1}/$selectedDayOfMonth"
                  tvSelectedDate?.setText(selectedDate)
    
                  // SimpleDateFormat: 날짜에 사용할 패턴을 지정
                  val sdf = SimpleDateFormat("yyyy/MM/dd", Locale.KOREA)
                  // 날짜를 형식으로 전환
                  val theDate = sdf.parse(selectedDate)
    
                  // null 안정성: let은 날짜 선택여부를 확인하고 코드가 실행된다.
                  theDate?.let{
                      // 시간계산
                      // time은 1970.01.01부터 지난 시간을 ms 단위로 알려준다.
                      val selectedDateInMinutes = theDate.time / 60000
                      // 현재 시간을 계산
                      val currentDate = sdf.parse(sdf.format(System.currentTimeMillis()))
                      currentDate?.let{
                          val currentDateInMinutes = currentDate.time / 60000
    
                          val differenceInMinutes = currentDateInMinutes - selectedDateInMinutes
                          // 시간 차이를 넣어준다.
                          tvAgeInMinutes?.text = differenceInMinutes.toString()
                      }
                  }
              },
              year,
              month,
              day
          )
          // 최대 날짜는 현재시간에서 하루치를 빼준다.
          dpd.datePicker.maxDate = System.currentTimeMillis() - 86400000
          dpd.show()
      }