2013-08-14 34 views
15

Tôi có ứng dụng Phonegap 3.0.0. Ứng dụng của tôi bao gồm thanh trạng thái (thứ có đồng hồ, thông tin tiếp nhận, v.v.). Vì tôi không phải là một trò chơi toàn màn hình, điều này là không mong muốn.Hiển thị thanh trạng thái trong Android trong ứng dụng PhoneGap (tức là ngăn chặn toàn màn hình)

Tôi tin rằng ứng dụng này đang chạy dưới dạng ứng dụng "Toàn màn hình".

Tôi đã tìm thấy các bài đăng ở đây trên ngăn xếp để làm điều ngược lại (ví dụ: tạo ứng dụng ở chế độ toàn màn hình) và làm ngược lại những gì được đề xuất. Tôi đang tự hỏi nếu một cái gì đó thay đổi trong PhoneGap hoặc có lẽ là PhoneGap CLI mà tôi sử dụng để tạo ra các dự án vì ứng dụng của tôi đang hiển thị toàn màn hình.

Tôi cố gắng này:

public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 

     super.setIntegerProperty("splashscreen", R.drawable.splash); 

     getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); 

     super.loadUrl(Config.getStartUrl(), 10000); 
    } 

nào một cách rõ ràng nói với nó để KHÔNG được ở chế độ toàn màn hình .... nhưng đó vẫn hiển thị toàn màn hình.

Trả lời

19

I figured it out.

Plugin Splashscreen phải được đặt thành chế độ toàn màn hình. Bằng cách gọi phương thức clearFlags SAU super.loadUrl, sau khi ứng dụng tải thanh trạng thái hiển thị.

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    super.setIntegerProperty("splashscreen", R.drawable.splash); 
    super.loadUrl(Config.getStartUrl(), 10000); 

    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 
+5

đẹp nhất, tôi đã cố gắng thiết lập cấu hình toàn diện này, đã không 't nhận ra rằng nó thực sự là màn hình splashing rối tung với tình trạng – benka

+2

Splashscreen! Thủ phạm ẩn giấu. Điều này thực sự cần được ghi lại –

1
// Hide status bar 
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
// Show status bar 
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Hành vi mặc định KHÔNG được toàn màn hình, bạn đã sửa đổi chủ đề của mình trong xml chưa?

Một số mã khác tôi đã tìm thấy, chỉ trong trường hợp:

private void toggleFullscreen(boolean fullscreen) 
{ 
    WindowManager.LayoutParams attrs = getWindow().getAttributes(); 
    if (fullscreen) 
    { 
     attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    else 
    { 
     attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN; 
    } 
    getWindow().setAttributes(attrs); 
} 
+0

+1 để xác nhận KHÔNG NÊN mặc định ở chế độ toàn màn hình. Tôi đã không sửa đổi bất kỳ tệp xml nào. Đó là bất cứ điều gì cli phonegap tạo ra cho tôi. Tôi nhận ra rằng nó phải là vì các plugin splashscreen nhờ vào bài viết của bạn. Xem câu trả lời của tôi. – blak3r

+0

Chỉ để cho bạn biết: http://cyrilmottier.com/2012/05/03/splash-screens-are-evil-dont-use-them/ –

39

Các mã gốc gợi ý ở trên sẽ làm việc, nhưng một cách sạch sẽ chỉ để chắc chắn rằng bạn không có trong config.xml:

<preference name="fullscreen" value="true" /> 

bạn cũng có thể thiết lập nó thành "false", nhưng nó thực sự là giá trị mặc định nên không cần thiết. làm việc cho tôi.

+0

Đó có phải là tùy chọn chỉ dành cho Android không? Nó sẽ làm điều gì đó kỳ lạ với một ứng dụng ios? Tôi chỉ chỉnh sửa mã gốc như một phương sách cuối cùng vì vậy nếu nó hoạt động, nó phải có được tài liệu tại thời điểm tôi đăng. – blak3r

+1

Tôi đã thử nghiệm nó chỉ dành cho android. tài liệu được tạo thành cho "bản dựng thẻ điện thoại" theo bất kỳ cách nào: https://build.phonegap.com/docs/config-xml –

+0

Bạn nên thử nghiệm trên iOS và báo cáo tại đây :) –

2

thực hiện thay đổi này trong res/xml/config.xml trên nhật thực.

<preference 
    name="fullscreen" 
    value="false" /> 
Các vấn đề liên quan