2016-07-07 15 views
6

Tôi đang tìm cách tạo ứng dụng Android toàn màn hình, nhưng chỉ hiển thị thanh điều hướng android trên một màn hình nhất định (màn hình cài đặt của tôi). Tôi biết rằng nó là nguy hiểm để ẩn thanh điều hướng vĩnh viễn trên một màn hình, nhưng tôi muốn biết nếu điều này là có thể. Tôi đã xem xét việc root thiết bị của mình và sử dụng khung công tác Xposed.Lập trình kích hoạt/vô hiệu hóa Chế độ nhập vai

Có cách nào để tắt chương trình thanh điều hướng hoặc "chế độ dính" và bật lại sau này không?

Chỉnh sửa: Tôi đã xem Chế độ chìm của Android nhưng có vẻ như thanh điều hướng sẽ vẫn hiển thị nếu người dùng chạm vào cạnh. Tôi muốn xóa bất kỳ gợi ý nào của thanh điều hướng cho đến khi chúng chuyển đến màn hình cài đặt của tôi.

Trả lời

2

Có thể thực hiện được. Sử dụng đoạn mã dưới đây để đạt được chức năng mong muốn.

// This snippet hides the system bars. 
private void hideSystemUI() { 
    // Set the IMMERSIVE flag. 
    // Set the content to appear under the system bars so that the content 
    // doesn't resize when the system bars hide and show. 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
      | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 
      | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 
      | View.SYSTEM_UI_FLAG_IMMERSIVE); 
} 

// This snippet shows the system bars. It does this by removing all the flags 
// except for the ones that make the content appear under the system bars. 
private void showSystemUI() { 
    View decorView = getWindow().getDecorView(); 
    decorView.setSystemUiVisibility(
      View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
      | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 
} 

Để biết thêm thông tin chi tiết tham khảo các dưới đây google tài liệu:

https://developer.android.com/training/system-ui/immersive.html

EDIT 1: Để ẩn nó vĩnh viễn có thể bạn có thể thử một cái gì đó như thế này (Hacky)

decorView.setOnSystemUiVisibilityChangeListener 
       (new View.OnSystemUiVisibilityChangeListener() { 
        @Override 
        public void onSystemUiVisibilityChange(int visibility) { 

          hideSystemUI(); 


        } 
       });` 
+0

Cảm ơn bạn đã trả lời. Tôi đã nhìn vào điều này trước khi tôi đăng nhưng câu hỏi của tôi với chế độ nhập vai là dòng này: "Người dùng có thể tiết lộ các thanh hệ thống với một swipe bên trong dọc theo khu vực nơi các thanh hệ thống thường xuất hiện". Nó sẽ không ghi đè lên hide()? Tôi muốn tắt điều đó cho đến khi người dùng chuyển đến màn hình cài đặt của tôi. – Jason

+0

Có, trong thực tế, người dùng được hiển thị một hướng dẫn khi ông mở chế độ nhập vai lần đầu tiên. Mà nói với anh ta rằng swiping xuống sẽ đóng chế độ toàn màn hình. –

+0

Phải và tôi không muốn họ đóng chế độ toàn màn hình * trừ khi * họ đi đến một trong các màn hình khác của tôi. Đó là câu hỏi thực sự của tôi. Tôi muốn ngăn người dùng truy cập hoàn toàn vào thanh điều hướng cho đến khi họ truy cập vào một màn hình nhất định. – Jason

Các vấn đề liên quan