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

วิธีตรวจสอบว่า Activity อยู่ในโหมด Landscape หรือไม่

ภาพรวม

บทความนี้สาธิตวิธีตรวจสอบเฉพาะโหมด Landscape (แนวนอน) โดยใช้ onConfigurationChanged() คล้ายบทความก่อนหน้าแต่โฟกัสที่ Landscape

ขั้นตอนที่ 1-2: เหมือนบทความก่อนหน้า

สร้างโปรเจกต์และ Layout เหมือนเดิม (ConstraintLayout + TextView)

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

package com.example.myapplication;

import android.content.res.Configuration;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private TextView confTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        confTextView = findViewById(R.id.conf);
        checkLandscape();
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        checkLandscape();
    }

    private void checkLandscape() {
        int orientation = getResources().getConfiguration().orientation;
        if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            confTextView.setText("✓ อยู่ในโหมด Landscape (แนวนอน)");
        } else {
            confTextView.setText("✗ ไม่อยู่ในโหมด Landscape (อยู่ใน Portrait)");
        }
    }
}

ขั้นตอนที่ 4: AndroidManifest.xml

<activity
    android:name=".MainActivity"
    android:configChanges="orientation|screenSize|screenLayout|keyboardHidden"
    ...>
    ...
</activity>

กรณีใช้งานจริง

  • วิดีโอเพลเยอร์ - เปลี่ยน UI เป็นเต็มหน้าจอเมื่อ Landscape
  • เกม - บังคับให้เล่นได้เฉพาะ Landscape
  • แผนที่ - แสดงข้อมูลมากขึ้นในโหมดกว้าง

บังคับให้เป็น Landscape เท่านั้น

ใน AndroidManifest.xml:

<activity
    android:name=".MainActivity"
    android:screenOrientation="landscape"
    ...>

หรือในโค้ด:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

ทดสอบ

หมุนอุปกรณ์เป็นแนวนอน → แสดง "✓ อยู่ในโหมด Landscape"
หมุนกลับแนวตั้ง → แสดง "✗ ไม่อยู่ในโหมด Landscape"