Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách lấy kích thước màn hình tính bằng pixel trong Android

Giới thiệu

Hướng dẫn này trình bày cách lấy chiều rộng và chiều cao màn hình thiết bị tính bằng pixel (pixel dimensions) trong ứng dụng Android.

Các bước thực hiện

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (res/layout/activity_main.xml)

<?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/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="176dp"
        android:text="Chiều rộng (Pixels): "
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/textView1"
        android:layout_below="@+id/textView2"
        android:layout_marginTop="24dp"
        android:text="Chiều cao (Pixels): "
        android:textAppearance="?android:attr/textAppearanceLarge" />
    <TextView
        android:id="@+id/textView4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView2"
        android:layout_below="@+id/textView3"
        android:layout_marginTop="16dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>

Bước 3: Viết logic xử lý (src/MainActivity.java)

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.WindowManager;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    TextView tvWidth, tvHeight;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        tvWidth = findViewById(R.id.textView2);
        tvHeight = findViewById(R.id.textView4);
        
        DisplayMetrics displayMetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) getApplicationContext()
            .getSystemService(Context.WINDOW_SERVICE);
        
        // Lấy thông tin hiển thị mặc định
        windowManager.getDefaultDisplay().getMetrics(displayMetrics);
        
        int deviceWidth = displayMetrics.widthPixels;
        int deviceHeight = displayMetrics.heightPixels;
        
        tvWidth.setText(String.valueOf(deviceWidth));
        tvHeight.setText(String.valueOf(deviceHeight));
    }
}

Bước 4: Cấu hình Manifest (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>

Giải thích

  • DisplayMetrics chứa thông tin về mật độ, kích thước, font scaling của màn hình
  • widthPixels và heightPixels cho kích thước tuyệt đối tính bằng pixel
  • densityDpi cho mật độ pixel (ldpi, mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi)
  • density tỷ lệ scaling (1.0 cho mdpi, 1.5 cho hdpi, 2.0 cho xhdpi, v.v.)

Cách hiện đại (API 30+)

// Sử dụng WindowMetricsCalculator (API 30+)
WindowMetrics windowMetrics = WindowMetricsCalculator.getOrCreate()
    .computeCurrentWindowMetrics(this);
int width = windowMetrics.getBounds().width();
int height = windowMetrics.getBounds().height();

Chạy ứng dụng

Kết nối thiết bị Android, nhấn Run trong Android Studio. Ứng dụng hiển thị chiều rộng và chiều cao màn hình tính bằng pixel.

Cách lấy kích thước màn hình tính bằng pixel trong Android