Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีตั้งค่าภาพพื้นหลังซ้ำ (Repeated Background) ในแอป Android

การตั้งค่าภาพพื้นหลังแบบซ้ำ (Tiled/Repeated Background) ใน Android

ตัวอย่างนี้สาธิตวิธีใช้ BitmapDrawable กับ tileMode="repeat" เพื่อทำให้รูปภาพเล็กๆ ทำซ้ำเต็มหน้าจอเป็นพื้นหลัง

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่

เปิด Android Studio เลือก File → New Project และกรอกข้อมูลที่จำเป็น

ขั้นตอนที่ 2: สร้าง Drawable Resource (res/drawable/app_background.xml)

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="https://schemas.android.com/apk/res/android"
    android:src="@drawable/image1"
    android:tileMode="repeat" />

ขั้นตอนที่ 3: กำหนด Theme (res/values/styles.xml)

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowBackground">@drawable/app_background</item>
    </style>
</resources>

ขั้นตอนที่ 4: จัดทำ Layout (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="16dp" />

ขั้นตอนที่ 5: เขียนโค้ดหลัก (src/MainActivity.java)

package app.com.sample;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

ขั้นตอนที่ 6: กำหนดค่าใน 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>

การทดสอบ

รันแอปพลิเคชัน พื้นหลังจะเป็นรูป image1 ทำซ้ำเต็มหน้าจอ

วิธีตั้งค่าภาพพื้นหลังซ้ำ (Repeated Background) ในแอป Android

ตัวเลือก tileMode อื่นๆ

tileMode พฤติกรรม
repeat ทำซ้ำในทั้งแนวนอนและแนวตั้ง (ค่าเริ่มต้น)
mirror ทำซ้ำแบบกระจก (flip ทุกครั้งที่ซ้ำ)
clamp ไม่ทำซ้ำ ขยายขอบสุดท้ายไปเติมพื้นที่ว่าง
disabled ไม่ทำซ้ำ แสดงเพียงครั้งเดียว

การกำหนด tileMode แบบแยกแกน (API 31+)

<bitmap
    android:src="@drawable/pattern"
    android:tileModeX="repeat"
    android:tileModeY="clamp" />

การทำซ้ำผ่านโค้ด Java (Dynamic)

BitmapDrawable drawable = (BitmapDrawable) ContextCompat.getDrawable(this, R.drawable.image1);
drawable.setTileModeXY(Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
view.setBackground(drawable);