화면 비율에 맞게 View의 사이즈 변경

채현·2024년 2월 5일
0

안드로이드

목록 보기
37/37

개발 태블릿과 홍보용 태블릿의 해상도가 달라 인터페이스가 어색해보여,
해상도에 따라 View의 크기가 달라지도록 수정하고자 하였다.

1. 앱이 실행되고 있는 디바이스의 해상도 가져오기 (버전 체크)

    fun getScreenSize(activity: Activity): Point {
        val display =  if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) activity.display
                       else @Suppress("DEPRECATION") activity.windowManager.defaultDisplay
        val size = Point()
        display?.getSize(size)

        return size
    }

2. 해상도 density로 나누어 기준 사이즈 얻기 (이 값은 기기와 무관)

    fun getStandardSize(): Pair<Float, Float> {
        val screenSize = getScreenSize(getBaseActivity())
        val density = resources.displayMetrics.density

        val standardSizeX = (screenSize.x/density)
        val standardSizeY = (screenSize.y/density)

        return Pair(standardSizeX,standardSizeY)
    }

3. 해당 View가 화면에서 차지하고자 하는 만큼 값 주기

Pair로 리턴을 받으므로 first는 가로값, second는 세로값

3-1. TextView fontSize 변경

	binding.textView.textSize = getStandardSize().first / 36

3-2. View의 width/height 변경

	val standard = getStandardSize().first

	val pbParams = childBinding.progressbar.layoutParams
	pbParams.width = (standard / 3).toInt()
	pbParams.height = (standard / 3).toInt()
	binding.progressbar.layoutParams = pbParams


도움받은 곳
https://featherwing.tistory.com/22
https://blacktrees.tistory.com/entry/Android-view-layout-width-height-%EB%B3%80%EA%B2%BD-%EB%B0%A9%EB%B2%95

0개의 댓글