[Android] Screen Size로 폰과 태플릿 구분하기

2022. 11. 23. 17:47·작업 일지
반응형

홈 트레이닝 서비스 프로젝트 중에 폰은 세로모드, 태블릿은 가로모드로 고정을 해달라는 요청을 받았다.

현재 사용 중인 기기가 폰인지 태블릿인지를 구하고 가로 또는 세로모드를 고정시켜야겠다고 생각했다.

 

기기의 타입을 확인하는 방법은 안드로이드의 Configuration에서 제공하는 screenLayout을 사용하면 된다.

 

우선 screenLayout은 화면 전체 레이아웃에 대한 비트 마스크라고 한다.

(비트 마스크 : 비트를 마스킹하는 기술로 비트 연산을 통해 정수의 이진 비트를 처리하는 작업)

 

Configuration에는 ScreenLayout에 대한 정적 변수들이 있다. 그중 SCREENLAYOUT_SIZE_MASK는 screenLayout의 크기를 인코딩하는 비트라고 한다. 

• SCREENLAYOUT_SIZE_SMALL
화면이 최소 약 320x426dp 단위임을 나타내는 값
Ex) 저해상도 및 초소형 기기

• SCREENLAYOUT_SIZE_NORMAL
화면이 최소 약 320x470dp 단위임을 나타내는 값
Ex) 일반적인 기기

• SCREENLAYOUT_SIZE_LARGE
화면이 최소 약 480X640dp 단위임을 나타내는 값
Ex) 7인치를 넘어가는 기기

• SCREENLAYOUT_SIZE_XLARGE
화면이 최소 약 720x960dp 단위임을 나타내는 값
Ex) 10인치를 넘어가는 기기

Configuration의 ScreenLayout에 대한 정적 변수 중 크기를 알려주는 값

참고 자료

screenLayout과 and 비트 연산을 통해 사용 중인 기기의 타입 값을(정적 변수) 얻을 수 있다.

val tvType = findViewById<TextView>(R.id.tv_type)

val screenSizeType = resources.configuration.screenLayout and Configuration.SCREENLAYOUT_SIZE_MASK

when (screenSizeType) {
    Configuration.SCREENLAYOUT_SIZE_SMALL -> {
        tvType.text = getString(R.string.small)
    }
    Configuration.SCREENLAYOUT_SIZE_NORMAL -> {
        tvType.text = getString(R.string.normal)
    }
    Configuration.SCREENLAYOUT_SIZE_LARGE -> {
        tvType.text = getString(R.string.large)
    }
    Configuration.SCREENLAYOUT_SIZE_XLARGE -> {
        tvType.text = getString(R.string.x_large)
    }
    else -> {
        tvType.text = getString(R.string.unknown)
    }
}

(왼쪽)갤럭시 z 플립, (가운데)갤럭시 z 폴드-접힘, (오른쪽)갤럭시 z 폴드-펼힘

 

전체 코드

반응형

'작업 일지' 카테고리의 다른 글

[Android] Mqtt, subjectAltNames에 대한 고민  (0) 2022.12.21
[Android] ExifInterface와 Matrix로 이미지 회전 시키기  (2) 2022.11.29
[Android] 폴더블 기기를 접거나 폈을 때 UI 처리  (0) 2022.11.24
[Android] 기기 화면을 가로, 세로로 회전 시키기  (0) 2022.11.24
[Android] 폴더블 기기 UI 대응하기  (0) 2022.11.22
'작업 일지' 카테고리의 다른 글
  • [Android] ExifInterface와 Matrix로 이미지 회전 시키기
  • [Android] 폴더블 기기를 접거나 폈을 때 UI 처리
  • [Android] 기기 화면을 가로, 세로로 회전 시키기
  • [Android] 폴더블 기기 UI 대응하기
O_Gyong
O_Gyong
안드로이드 기술 정리
  • O_Gyong
    O_Gyong's TECH
    O_Gyong
    • 분류 전체보기 (80) N
      • Android (57) N
        • ADB (4)
        • Architecture (1)
        • Data (5)
        • Network & Connecting (4)
        • Security & Privacy (3)
        • UI (24)
        • 기타 (2)
        • 이슈 처리 (14) N
      • Android Studio (5)
      • Firebase (2)
      • Git (3)
      • 작업 일지 (13)
  • 최근 글

  • 인기 글

  • 태그

    GIT
    BLE
    loading
    CalendarView
    Paging3
    해상도
    Room
    Kotlin
    paging
    recyclerview
    webview
    SharedPreferences
    flow
    ADB
    TabLayout
    Bluetooth
    firebase
    hilt
    CameraX
    github
    kizitonwose
    MQTT
    Andoird
    Pagination
    issue
    compose
    Android Studio
    Android
    Navigation
    in-app update
  • 링크

    • GitHub
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • hELLO· Designed By정상우.v4.10.4
O_Gyong
[Android] Screen Size로 폰과 태플릿 구분하기
상단으로

티스토리툴바