Android 분 단위 나이 계산기
업데이트:
카테고리: Android
/태그: complie error, Kotlin
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() }