ภาพรวม
บทความนี้สาธิตวิธีตรวจสอบเฉพาะโหมด 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"