Xác định Trạng Thái Xoay Màn Hình Trong Android

Lấy trạng thái màn hình ngang hay đứng

Để xác định được trạng thái Layout màn hình sử dụng lớp Display với phương thức getDefaultDisplay(). Trong Activity lấy được Display với mã sau:

Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay();

Có được Display có thể biết trạng thái xoay Layout hiện tại với phương thức getRotation(), ví dụ:

switch (display.getRotation()) { case Surface.ROTATION_0: huongmanhinh.setText("Màn hình LAYOUT đứng: 0°"); break; case Surface.ROTATION_90: huongmanhinh.setText("Màn hình LAYOUT ngang: 90°"); break; case Surface.ROTATION_180: huongmanhinh.setText("Màn hình LAYOUT ngang: 180°"); break; case Surface.ROTATION_270: huongmanhinh.setText("Màn hình LAYOUT đứng: 270°"); break; } xoaymanhinh

Nhận thông tin khi góc nghiêng điện thoại thay đổi

Khi xoay điện thoại, cảm biến góc nghiêng sẽ cho biết độ nghiêng của điện thoại, muốn nhận sự kiện này hãy sử dụng OrientationEventListener, ví dụ:

OrientationEventListener myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { @Override public void onOrientationChanged(int i) { //i là góc nghiêng } }; myOrientationEventListener.enable(); goc nghieng android

Ví dụ

Tạo một Activity có tên Orientation, hiện thị thông tin góc xoay màn hình, trạng thái Layout

activity_orientation.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="net.xuanthulab.appbarexample.Orientation"> <LinearLayout android:padding="5dp" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:textSize="20sp" android:id="@+id/huongmanhinh" android:layout_width="match_parent" android:layout_height="wrap_content" /> <TextView android:textSize="20sp" android:id="@+id/gocnghieng" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> </android.support.constraint.ConstraintLayout>

Orientation.java

public class Orientation extends AppCompatActivity { Display display; TextView huongmanhinh, gocnghieng; OrientationEventListener myOrientationEventListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_orientation); huongmanhinh = findViewById(R.id.huongmanhinh); gocnghieng = findViewById(R.id.gocnghieng); InfoScreen(); ListenerRotate(); } //Listener nhận sự kiện thay đổi góc nghiêng điện thoại void ListenerRotate() { myOrientationEventListener = new OrientationEventListener(this, SensorManager.SENSOR_DELAY_NORMAL) { @Override public void onOrientationChanged(int i) { gocnghieng.setText("Góc nghiêng: "+i+"°"); InfoScreen(); } }; myOrientationEventListener.enable(); } /** * Xác định màn hình PORTRAIT, LANDSCAPE */ void InfoScreen() { Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)) .getDefaultDisplay(); switch (display.getRotation()) { case Surface.ROTATION_0: huongmanhinh.setText("Màn hình LAYOUT đứng: 0°"); break; case Surface.ROTATION_90: huongmanhinh.setText("Màn hình LAYOUT ngang: 90°"); break; case Surface.ROTATION_180: huongmanhinh.setText("Màn hình LAYOUT ngang: 180°"); break; case Surface.ROTATION_270: huongmanhinh.setText("Màn hình LAYOUT đứng: 270°"); break; } } } ĐĂNG KÝ KÊNH, XEM CÁC VIDEO TRÊN XUANTHULAB Đăng ký nhận bài viết mới

Từ khóa » Khóa Xoay Màn Hình Android Studio