Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드에서 프로그래밍 방식으로 화면 DPI(밀도) 가져오는 방법

개요

이 튜토리얼에서는 안드로이드에서 프로그래밍 방식으로 화면 DPI(픽셀 밀도)를 가져오는 방법을 단계별로 살펴봅니다. 화면 밀도는 기기마다 UI 요소의 크기를 일관되게 유지해야 할 때 꼭 필요한 정보입니다. 안드로이드에서는 DisplayMetrics 클래스를 통해 손쉽게 이 값을 확인할 수 있습니다.

1단계 — 새 프로젝트 생성

Android Studio에서 File → New Project를 선택한 후, 필요한 모든 항목을 입력하여 새 프로젝트를 만듭니다.

2단계 — 레이아웃 파일 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 화면 밀도 값을 표시할 TextView와 클릭 버튼 하나로 구성된 간단한 레이아웃입니다.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="180dp"
        android:text="Density Show Here"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <Button
        android:id="@+id/btnShowDensity"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="Click here to Find screen density" />
</RelativeLayout>

3단계 — MainActivity 작성

src/MainActivity.java 파일에 아래 코드를 추가합니다. 버튼을 클릭하면 DisplayMetrics 객체를 통해 현재 화면의 밀도(density) 값을 읽어와 TextView에 출력하는 구조입니다.

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    Button button;
    TextView textview;
    float value = 0;
    DisplayMetrics displaymetrics;
    Activity activity;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.btnShowDensity);
        textview = findViewById(R.id.textView);
        activity = MainActivity.this;
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                displaymetrics = new DisplayMetrics();
                activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
                value = getResources().getDisplayMetrics().density;
                textview.setText("Screen Density = " + String.valueOf(value));
            }
        });
    }
}

여기서 핵심은 두 가지입니다. 첫째, getWindowManager().getDefaultDisplay().getMetrics()로 화면 정보를 담은 DisplayMetrics 객체를 얻고, 둘째, getResources().getDisplayMetrics().density로 실제 밀도 배율 값을 계산한다는 점입니다.

참고로 안드로이드의 밀도 배율은 일반적으로 다음과 같습니다. mdpi는 1.0, hdpi는 1.5, xhdpi는 2.0, xxhdpi는 3.0, xxxhdpi는 4.0입니다. 즉, 값이 3.0으로 나오면 해당 기기는 xxhdpi 화면이라는 뜻입니다.

4단계 — 매니페스트 설정

androidManifest.xml 파일에 아래 코드를 추가합니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하세요. 기기 선택 목록에서 자신의 모바일 기기를 고르면, 기기 화면에 아래와 같은 결과가 표시됩니다.

안드로이드에서 프로그래밍 방식으로 화면 DPI(밀도) 가져오는 방법


안드로이드에서 프로그래밍 방식으로 화면 DPI(밀도) 가져오는 방법

버튼을 누르면 현재 기기의 화면 밀도 값이 화면에 나타나며, 이 값을 활용하면 해상도가 서로 다른 다양한 기기에서도 일관된 UI를 구현할 수 있습니다.