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

Cách chuyển đổi pixel sang DP trong ứng dụng Android

Giới thiệu

Hướng dẫn này trình bày cách chuyển đổi giá trị pixel (px) sang density-independent pixels (dp) trong ứng dụng Android. Việc chuyển đổi này quan trọng để đảm bảo giao diện hiển thị nhất quán trên các màn hình có mật độ pixel khác nhau.

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 đầy đủ thông tin cần thiết để tạo dự án mới.

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:id="@+id/rl"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Chuyển đổi Pixel sang DP"
        android:layout_centerInParent="true" />
    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="Sans-Serif-Condensed"
        android:textSize="14dp"
        android:layout_below="@id/btn"
        android:textStyle="italic"
        android:textColor="#ff0000" />
</RelativeLayout>

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

import android.content.Context;
import android.content.res.Resources;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        final RelativeLayout rl = findViewById(R.id.rl);
        final Button btn = findViewById(R.id.btn);
        final TextView tv = findViewById(R.id.tv);
        
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int pixels_one = 38;
                int pixels_two = 43;
                Context context = getApplicationContext();
                
                tv.setText("Chuyển đổi Pixel sang giá trị DP nguyên: \n" +
                    pixels_one + " pixels = " + getDPsFromPixels(context, pixels_one) + " dp\n" +
                    pixels_two + " pixels = " + getDPsFromPixels(context, pixels_two) + " dp\n");
                
                tv.append("Chuyển đổi Pixel sang giá trị DP chính xác: \n" +
                    pixels_one + " pixels = " + getActualDPsFromPixels(context, pixels_one) + " dp\n" +
                    pixels_two + " pixels = " + getActualDPsFromPixels(context, pixels_two) + " dp");
            }
        });
    }
    
    // Chuyển đổi làm tròn thành số nguyên
    public static int getDPsFromPixels(Context context, int pixels) {
        Resources r = context.getResources();
        int dps = Math.round(pixels / (r.getDisplayMetrics().densityDpi / 160f));
        return dps;
    }
    
    // Chuyển đổi giữ nguyên phần thập phân
    public static float getActualDPsFromPixels(Context context, int pixels) {
        Resources r = context.getResources();
        float dps = pixels / (r.getDisplayMetrics().densityDpi / 160f);
        return dps;
    }
}

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>

Chạy ứng dụng

Kết nối thiết bị Android thật với máy tính. Trong Android Studio, mở file activity và nhấn biểu tượng Run trên thanh công cụ. Chọn thiết bị di động của bạn để xem kết quả.

Cách chuyển đổi pixel sang DP trong ứng dụng Android

Cách chuyển đổi pixel sang DP trong ứng dụng Android