2015-10-11 26 views
12

Tôi đang tạo một trò chơi đơn giản và cho đến nay tôi đã sử dụng Hoạt động trống. Bây giờ tôi muốn nó để trang trải toàn bộ màn hình, tôi sẽ cần phải Recode toàn bộ điều bằng cách sử dụng một hoạt động FullScreen? Tôi đã cố gắng tìm kiếm một cái gì đó trực tuyến, nhưng tất cả mọi thứ tôi đã xem qua đã thêm chút này: ​Sử dụng toàn màn hình Hoạt động

requestWindowFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN); 

nào gây ra các ứng dụng để sụp đổ ngay sau khi nó được tung ra trên thiết bị. SO xin vui lòng nếu có ai có thể cho tôi thấy lỗi của tôi.

Dưới đây là một liên kết đến sản lượng logcat cũng như mã trò chơi

Logcat and game code

+0

Hiển thị cho chúng tôi Logcat của bạn và chúng tôi sẽ hiển thị cho bạn lỗi. –

+0

Nhập nhật ký –

+0

Thêm vào câu hỏi của bạn. –

Trả lời

30

Hãy thử này để thiết lập hoạt động để toàn màn hình:

getWindow().getDecorView().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 
| View.SYSTEM_UI_FLAG_FULLSCREEN 
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

Bạn có thể đặt mã này trong onCreate() phương pháp

+0

Về cơ bản Đây không phải là lần đầu tiên làm việc như tôi đã có SDK mục tiêu thiết lập tất cả các con đường trở lại Froyo.Một khi tôi thay đổi điều đó để KitKat, Điều này làm việc như một nét duyên dáng –

+0

@Michele Lacorte Tôi đang gặp một thanh màu trắng khi ngăn điều hướng của tôi tắt trong android L? –

+1

Tôi nghĩ rằng giải pháp @ t-kashima xml dưới đây trong các câu trả lời là khá tốt đẹp. Kiểm tra nó ra. Không cần phải sao chép mã của câu trả lời được chấp nhận này ở mọi nơi nếu bạn có một kiểu định nghĩa toàn màn hình. –

0

Bạn chỉ cần truy cập tệp kê khai của mình và thêm android:theme="@android:style/Theme.NoTitleBar.Fullscreen" vàocủa mình<activity /> hoặc <application /> thẻ trong tệp kê khai của bạn tùy thuộc vào yêu cầu của bạn.

+0

Điều đó cũng vậy, không hoạt động. –

24

Bạn có thể thử mã sau đây.

style.xml:

<style name="AppTheme.NoTitle" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowNoTitle">true</item> 
    <item name="windowActionBar">false</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowContentOverlay">@null</item> 
</style> 

AndroidManifest.xml:

<activity 
    android:name=".FullScreenActivity" 
    android:theme="@style/AppTheme.NoTitle" 
    android:screenOrientation="portrait" 
    android:launchMode="singleTop"> 
</activity> 
+2

giải pháp tốt nhất là ở đây tôi nghĩ. Nên có nhiều upvotes hơn. – hcknl

+0

Được thăng hạng, nhưng nó không hoạt động tốt. Thử nghiệm nó và nó cho thấy các nút mềm khi tiếp tục hoạt động. – RominaV

2

Những gì bạn muốn được gọi là chế độ Imersive, hoạt động trên Android 4.4 và Trên

getWindow().getDecorView().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 
| View.SYSTEM_UI_FLAG_FULLSCREEN 
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 

Tài liệu chính thức có thể được tìm thấy here

2

Trong AndroidManifest.xml tập tin

<activity 
     android:name=".Launch" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > <!-- This line is important --> 

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

và lớp học của bạn nên mở rộng Hoạt động không AppCompatActivity ...

4

Không ai trong số các câu trả lời trên hoạt động một cách chính xác; chúng có vấn đề với phương pháp onResume() và kết thúc hiển thị các phím mềm.

Cách chính xác để thực hiện điều này khá đơn giản. Ghi đè phương thức này trong số Activity cần có chế độ toàn màn hình:

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    super.onWindowFocusChanged(hasFocus); 
    if (hasFocus) { 
     getWindow().getDecorView().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 
         | View.SYSTEM_UI_FLAG_FULLSCREEN 
         | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY); 
    } 
} 

Đó là nếu bạn muốn "Ngâm thông tin". Hãy xem tài liệu đầy đủ here và quyết định điều gì tốt hơn cho trường hợp sử dụng của bạn.

+1

Cảm ơn bạn! Đây sẽ là câu trả lời được chấp nhận. Tôi đã có này trong 'onResume()' như rất nhiều câu trả lời tràn ngăn xếp đề nghị, và nó đã làm việc 99% thời gian, làm cho nó khó khăn để gỡ lỗi. Bạn đã lưu tôi phải chạy mã này sau mỗi vài giây để giải quyết sự cố. – user1516661

+0

@ user1516661 Tôi đã nhầm lẫn lúc đầu với tất cả mọi người nói rằng để đặt nó vào phương pháp 'onResume()' quá :) – RominaV

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