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 bằng Kotlin

Giới thiệu

Bài viết này hướng dẫn cách chuyển đổi giá trị pixel (px) sang density-independent pixels (dp) trong ứng dụng Android sử dụng Kotlin.

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 để 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Chuyển đổi Pixel sang DP" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/button"
        android:textAlignment="center"
        android:textColor="#ff0000"
        android:textSize="24sp"
        android:textStyle="bold" />
</RelativeLayout>

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

import android.content.Context
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import kotlin.math.roundToInt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"
        
        val button = findViewById<Button>(R.id.button)
        val textView = findViewById<TextView>(R.id.textView)
        
        button.setOnClickListener {
            val pixelsOne = 38
            val pixelsTwo = 43
            val context: Context = applicationContext
            
            textView.text = """
                Chuyển đổi Pixel sang giá trị DP nguyên:
                ${pixelsOne}pixels = ${getDPsFromPixels(context, pixelsOne)}dp
                ${pixelsTwo}pixels = ${getDPsFromPixels(context, pixelsTwo)}
            """.trimIndent()
            
            textView.text = (textView.text.toString() + "Chuyển đổi Pixel sang giá trị DP chính xác: \n" +
                pixelsOne + "pixels = " + getActualDPsFromPixels(context, pixelsOne) +
                "dp\n" + pixelsOne + "pixels = " + getActualDPsFromPixels(context, pixelsOne))
        }
    }
    
    private fun getDPsFromPixels(context: Context, pixels: Int): Int {
        val resources = context.resources
        return (pixels / (resources.displayMetrics.densityDpi / 160f)).roundToInt()
    }
    
    private fun getActualDPsFromPixels(context: Context, pixels: Int): Float {
        val resources = context.resources
        return pixels / (resources.displayMetrics.densityDpi / 160f)
    }
}

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="com.example.q11">
    <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ực 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 và kiểm tra màn hình hiển thị.