Android'de Tam Ekran Etkinliği?


Yanıtlar:


1052

Programlı olarak yapabilirsiniz:

public class ActivityName extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // remove title
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

Veya bunu AndroidManifest.xmldosyanızla yapabilirsiniz:

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"/>

Düzenle:

AppCompatActivity kullanıyorsanız, yeni tema eklemeniz gerekir

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

ve sonra kullanın.

<activity android:name=".ActivityName"
    android:label="@string/app_name"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"/>

Https://stackoverflow.com/a/25365193/1646479 için teşekkürler


65
sadece android: theme = "@ android: style / Theme.NoTitleBar.Fullscreen" özelliği faaliyetinizde manifest üzerindeki yeterlidir. Teşekkürler :)
Praveen

19
Uygulamanız başka bir tema kullanıyorsa, ilgili tema adını Eg For White teması kullanın @android:style/Theme.Holo.Light.NoActionBar.Fullscreen
ankitjaininfo

5
Temayı manifest olarak ayarlamak, açılışta siyah bir ekrana neden olur, kodda yapmak daha iyidir.
aurelien_lepage

4
ActionBar kullanıyorsanız ve yalnızca TitleBar istemiyorsanız, `` requestWindowFeature () '' satırını kaldırın, aksi takdirde bu bir NullPointer'a neden olur
X.X_Mass_Developer

3
Eğer kullanıyorsanız AppCompatActivity, daha requestWindowFeatureönce koymanız gerekir super.onCreate. Aksi takdirde, alacaksınız:android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Slav

128

Denilen bir tekniği var sürükleyici Tam Ekran Modu mevcut KitKat'ta . Sürükleyici Tam Ekran Modu Demosu

Misal


5
Uygulamanızın ilk kez sürükleyici moda girdiği zaman bir "hatırlatma balonu" görüntüleneceğini unutmayın. Bu, bazı aktiviteler için iyidir, örneğin bir açılış ekranı yapıyorsanız değil.
LarsH

kullanırken kırılır
ViVekH

durum çubuğunu değil, yalnızca alt gezinme çubuğunu gizlemek istersiniz. bunu yapmak mümkün mü?
PvDev

76

@android:style/Theme.NoTitleBar.FullscreenZaten kendi temanızı kullandığınız için temayı kullanmak istemiyorsanız kullanabilirsiniz android:windowFullscreen.

AndroidManifest.xml'de:

<activity
  android:name=".ui.activity.MyActivity"
  android:theme="@style/MyTheme">
</activity>

Styles.xml dosyasında:

<style name="MyTheme"  parent="your parent theme">
  <item name="android:windowNoTitle">true</item>
  <item name="android:windowFullscreen">true</item> 
</style>

ana teman olarak ebeveyn ekle
Saurabh Bhandari

<item name = "windowActionBar"> yanlış </item> de yerleştirmeniz gerekiyor
htafoya

52

In AndroidManifest.xml dosyası:

<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>
</activity>  

Veya Java kodunda:

protected void onCreate(Bundle savedInstanceState){
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}

2

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

durum çubuğunu değil, yalnızca alt gezinme çubuğunu gizlemek istersiniz. bunu yapmak mümkün mü?
PvDev

32

AppCompat ve ActionBarActivity kullanıyorsanız, bunu kullanın

getSupportActionBar().hide();


Bu üstteki durum çubuğunu kaldırmayacak
Manohar Reddy

24

Dikkatli ol

requestWindowFeature(Window.FEATURE_NO_TITLE);

İşlem çubuğunu aşağıdaki gibi ayarlamak için herhangi bir yöntem kullanıyorsanız:

getSupportActionBar().setHomeButtonEnabled(true);

Boş bir işaretçi istisnasına neden olur.


Nedeni, yeniden boyutlandırma kodunun gizlemeye çalıştığı eylem çubuğunu ayarlamanızdır!
Andy

22

Bunu appcompat ile deneyin style.xml. Tüm platformlar için destek sağlar.

<!-- Application theme. -->
<style name="AppTheme.FullScreen" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
</style>


<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />

güzel ve kolay bir çözüm. Yeni başlayanlar için bu temayı AndroidManifest.xml'deki Etkinlik veya Uygulama etiketine ekleyin: android: theme = "@ style /
AppTheme.FullScreen

1
durum çubuğunu değil, yalnızca alt gezinme çubuğunu gizlemek istersiniz. bunu yapmak mümkün mü?
PvDev

13

Android Studio'yu kullanmak (şu anki sürüm 2.2.2'dir) tam ekran etkinliği eklemek çok kolaydır.

Adımlara bakın:

  1. Java ana paketinize sağ tıklayın> “Yeni” yi seçin> “Etkinlik” i seçin> Sonra “Tam Ekran Etkinliği” ne tıklayın.

Adım bir

  1. Etkinliği özelleştirin (“Etkinlik Adı”, “Düzen Adı” vb.) Ve “bitir” i tıklayın.

İkinci adım

Bitti!

Artık kolayca yapılan bir tam ekran etkinliğiniz var (işlerin nasıl çalıştığını öğrenmek için java sınıfına ve etkinlik düzenine bakın)!


8

AppCompact ... style.xml kullananlar için

 <style name="Xlogo" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
</style>

Sonra adı manifestinize koyun ...


7

Öncelikle uygulama temasını aşağıdaki gibi "NoActionBar" ile ayarlamanız gerekir

<!-- Application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.NoActionBar" />

Ardından bu satırları tam ekran etkinliğinize ekleyin.

public class MainActiviy extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                                  WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.main);
    }
}

Eylem çubuğunu / araç çubuğunu ve ayrıca tam ekran etkinliğinizdeki durum çubuğunu gizler


7

AndroidManifest.xml

<activity ...
          android:theme="@style/FullScreenTheme"
    >
</activity>

I. Ana uygulamanız tema Theme.AppCompat.Light.DarkActionBar olduğunu

ActionBar / StatusBar'ı gizlemek için
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--this property will help hide the ActionBar-->
    <item name="windowNoTitle">true</item>
    <!--currently, I don't know why we need this property since use windowNoTitle only already help hide actionbar. I use it because it is used inside Theme.AppCompat.Light.NoActionBar (you can check Theme.AppCompat.Light.NoActionBar code). I think there are some missing case that I don't know-->
    <item name="windowActionBar">false</item>
    <!--this property is used for hiding StatusBar-->
    <item name="android:windowFullscreen">true</item>
</style>

Sistem gezinme çubuğunu gizlemek için

public class MainActivity extends AppCompatActivity {

    protected void onCreate(Bundle savedInstanceState) {
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        setContentView(R.layout.activity_main)
        ...
    }
 }

II. Ana uygulama temanız Tema.AppCompat.Light.NoActionBar

ActionBar / StatusBar'ı gizlemek için
style.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    ...
</style>

<style name="FullScreenTheme" parent="AppTheme">
    <!--don't need any config for hide ActionBar because our apptheme is NoActionBar-->
    <!--this property is use for hide StatusBar-->
    <item name="android:windowFullscreen">true</item> // 
</style>

Sistem gezinme çubuğunu gizlemek için

Benzeri gibi Theme.AppCompat.Light.DarkActionBar.

gösteri


Teşekkürler. Android 5.0.1'de test edildi.
CoolMind

@CoolMind tekrar görüşmek üzere. Düzenlemeniz için teşekkür ederiz
Phan Van Linh

6

cevap için teşekkürler @Cristian hata alıyordum

android.util.AndroidRuntimeException: içerik eklenmeden önce requestFeature () çağrılmalıdır

bunu kullanarak çözdüm

@Override
protected void onCreate(Bundle savedInstanceState) {

    requestWindowFeature(Window.FEATURE_NO_TITLE);

    super.onCreate(savedInstanceState);

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

    setContentView(R.layout.activity_login);

    -----
    -----
}

requestWindowFeature(Window.FEATURE_NO_TITLE);Önceden ayarlamalı mıyız super.onCreate(savedInstanceState);?
CoolMind

4

Tam Sürükleyici göster:

private void askForFullScreen()
    {
        getActivity().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 // hide nav bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                        | View.SYSTEM_UI_FLAG_IMMERSIVE);
    }

tam kapsamlı moddan çıkma:

 private void moveOutOfFullScreen() {
        getActivity().getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }

3

@Android: style / Theme.NoTitleBar.Fullscreen kullanmak yerine kendi temamı kullanmak istedim. Ama burada bazı yazıların bahsettiği gibi çalışmıyordu, bu yüzden bunu anlamak için bazı değişiklikler yaptım.

AndroidManifest.xml'de:

<activity
    android:name=".ui.activity.MyActivity"
    android:theme="@style/MyTheme">
</activity>

Styles.xml dosyasında:

<style name="MyTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="windowActionBar">false</item>
    <item name="android:windowFullscreen">true</item>
</style>

Not: benim durumumda ben kullanmak zorunda name="windowActionBar"yerine name="android:windowActionBar"düzgün çalıştı önce. Bu yüzden her ikisini de daha sonra yeni bir Android sürümüne geçmem gerektiğinden emin olmak için kullandım.


3

İşte bir örnek kod. Belirli parçaları gizlemek / göstermek için bayrakları açabilir / kapatabilirsiniz.

resim açıklamasını buraya girin

public static void hideSystemUI(Activity activity) {
    View decorView = activity.getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    //| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    //| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
                    | View.SYSTEM_UI_FLAG_IMMERSIVE);
}

Ardından, varsayılan duruma sıfırlarsınız :

resim açıklamasını buraya girin

public static void showSystemUI(Activity activity) {
    View decorView = activity.getWindow().getDecorView();
    decorView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

Yukarıdaki işlevleri şu adresten arayabilirsiniz onCreate:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.course_activity);
    UiUtils.hideSystemUI(this);
}

3

KOTLIN

Google dokümanı takip etmenin kolay bir yolu var:

override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) hideSystemUI() }


private fun hideSystemUI() {
// Enables regular immersive mode.
// For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
// Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
        // Set the content to appear under the system bars so that the
        // content doesn't resize when the system bars hide and show.
        or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        // Hide the nav bar and status bar
        or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_FULLSCREEN)      }


// Shows the system bars by removing all the flags
// except for the ones that make the content appear under the system bars.
private fun showSystemUI() {
window.decorView.systemUiVisibility = 
(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)       }

Google dokümanları


2

İPUCU: getWindow () kullanarak setLayout () tam ekran görüntünüzü bozabilir! Bu yöntemin belgelerinin şunları söylediğine dikkat edin:

Pencerenin genişlik ve yükseklik düzeni parametrelerini ayarlayın ... bunları tam ekran olmayan bir pencere yapmak için mutlak bir değer olarak değiştirebilirsiniz.

http://developer.android.com/reference/android/view/Window.html#setLayout%28int,%20int%29

Benim amacım için, tam ekran penceremi doğru bir şekilde yeniden boyutlandırmak için setLayout'u mutlak parametrelerle kullanmak zorunda olduğumu buldum. Çoğu zaman, bu iyi çalıştı. Bir onConfigurationChanged () olayı tarafından çağrıldı. Ancak bir hıçkırık vardı. Kullanıcı uygulamadan çıkıp yönünü değiştirir ve yeniden girerse, setLayout () içeren kodumu tetiklememize neden olur. Bu yeniden giriş zamanı penceresi sırasında durum çubuğumun (manifest tarafından gizlenen) yeniden görünmesi sağlanır, ancak başka herhangi bir zamanda setLayout () buna neden olmaz! Çözüm, aşağıdaki gibi sabit değerlere sahip olandan sonra ek bir setLayout () çağrısı eklemekti:

       public static void setSize( final int width, final int height ){
//DO SOME OTHER STUFF...
            instance_.getWindow().setLayout( width, height );
            // Prevent status bar re-appearance
            Handler delay = new Handler();
            delay.postDelayed( new Runnable(){ public void run() {
                instance_.getWindow().setLayout(
                    WindowManager.LayoutParams.FILL_PARENT,
                    WindowManager.LayoutParams.FILL_PARENT );
            }}, FILL_PARENT_ON_RESIZE_DELAY_MILLIS );
        }

Daha sonra pencere doğru şekilde yeniden boyutlandırıldı ve bunu tetikleyen olaydan bağımsız olarak durum çubuğu yeniden görünmedi.


2
 @Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    adjustFullScreen(newConfig);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if (hasFocus) {
        adjustFullScreen(getResources().getConfiguration());
    }
}
private void adjustFullScreen(Configuration config) {
    final View decorView = getWindow().getDecorView();
    if (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        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
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
    } else {
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    }
}

2

İç stiller.xml ...

<!-- No action bar -->
<style name="NoActonBar" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Theme customization. -->
    <item name="colorPrimary">#000</item>
    <item name="colorPrimaryDark">#444</item>
    <item name="colorAccent">#999</item>
    <item name="android:windowFullscreen">true</item>
</style>

Bu benim için çalıştı. Umarım sana yardımcı olur.


2

Kotlin ile bunu yaptım:

class LoginActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)
        window.decorView.systemUiVisibility =
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
                View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
                View.SYSTEM_UI_FLAG_FULLSCREEN

    }
}

Sürükleyici Mod

Sürükleyici mod, kullanıcının ekranla yoğun bir şekilde etkileşime gireceği uygulamalar için tasarlanmıştır. Örnek olarak oyunlar, galerideki görüntüleri görüntüleme veya kitap veya sunudaki slaytlar gibi sayfalandırılmış içeriği okuma verilebilir. Bunun için şu satırları ekleyin:

View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION

Yapışkan sürükleyici

Düzenli sürükleyici modda, kullanıcı bir kenardan her hareket ettiğinde, sistem sistem çubuklarını açığa çıkarmaya çalışır; uygulamanız hareketin gerçekleştiğinin farkında bile olmaz. Dolayısıyla, kullanıcının birincil uygulama deneyiminin bir parçası olarak ekranın kenarından gerçekten hızlıca kaydırması gerekirse (örneğin, çok fazla kaydırma gerektiren veya çizim uygulaması kullanan bir oyun oynarken) bunun yerine "yapışkan" sürükleyici modu etkinleştirmelisiniz. .

View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

Daha fazla bilgi için: Tam ekran modunu etkinleştir

Klavyeyi kullanmanız durumunda, bazen klavye göründüğünde StatusBar görüntülenir. Bu durumda genellikle bunu xml stilime eklerim

styles.xml

<style name="FullScreen" parent="AppTheme">
    <item name="android:windowFullscreen">true</item>
</style>

Ve bu da tezahürüme göre

<activity
        android:name=".ui.login.LoginActivity"
        android:label="@string/title_activity_login"
        android:theme="@style/FullScreen">

Teşekkürler. API 16 ve 19 gerektirir
CoolMind

2

Sadece bu kodu onCreate()yönteme yapıştırın

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

1

Benim için çalıştı.

if (Build.VERSION.SDK_INT < 16) {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
    } else {
        View decorView = getWindow().getDecorView();
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
    }

1
Aksi takdirde aşağıdakileri kullanmak daha iyi olur: getWindow (). GetDecorView (). SetSystemUiVisibility (View.SYSTEM_UI_FLAG_FULLSCREEN);
16:22 Protonflux

1
 protected void onCreate(Bundle savedInstanceState) {
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.activity_splash_screen);
    getSupportActionBar().hide();

}

1

Başarısız olan çok zaman geçirdikten sonra, başka bir geliştiriciye benzeyen kendi çözümümle geldim. Birisi ona ihtiyaç duyuyorsa, sorunum, sistem gezinme çubuğunun aradıktan sonra saklanmamasıydı. Ayrıca benim durumumda manzaraya ihtiyacım vardı, bu yüzden sadece bu satır ve tüm yorum. Her şeyden önce stil yaratın

    <style name="FullscreenTheme" parent="AppTheme">
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
</style>

Bu benim manifest dosyam

<activity
        android:name=".Splash"
        android:screenOrientation="landscape"
        android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        android:label="@string/app_name"
        android:theme="@style/SplashTheme">

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

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

    <activity
        android:name=".MainActivity"
        android:configChanges="orientation|keyboard|keyboardHidden|screenLayout|screenSize"
        android:screenOrientation="landscape"
        android:label="@string/app_name"
        android:theme="@style/FullscreenTheme">
    </activity>

Bu benim spalsh aktivitem

public class Splash extends Activity {
/** Duration of wait **/
private final int SPLASH_DISPLAY_LENGTH = 2000;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.splash_creen);

    /* New Handler to start the Menu-Activity
     * and close this Splash-Screen after some seconds.*/
    new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            /* Create an Intent that will start the Menu-Activity. */
            Intent mainIntent = new Intent(Splash.this,MainActivity.class);
            Splash.this.startActivity(mainIntent);
            Splash.this.finish();
        }
    }, SPLASH_DISPLAY_LENGTH);
}

}

Ve bu benim ana tam ekran etkinliğim. onSystemUiVisibilityChange thi yöntemi önemli çıkmak çıkmak aksi takdirde android ana gezinti çubuğu çağrı kalacak ve artık kaybolmayacak. Gerçekten rahatsız edici bir sorun, ancak bu işlev bu sorunu çözer.

public class MainActivity, AppCompatActivity'yi genişletir {

private View mContentView;
@Override
public void onResume(){
    super.onResume();

    mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.fullscreen2);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null)
    {
        actionBar.hide();
    }
    mContentView = findViewById(R.id.fullscreen_content_text);
    mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);



    View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener
            (new View.OnSystemUiVisibilityChangeListener()
            {
                @Override
                public void onSystemUiVisibilityChange(int visibility)
                {
                    System.out.println("print");

                    if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0)
                    {
                        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                                | View.SYSTEM_UI_FLAG_FULLSCREEN
                                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
                    }
                    else
                    {

                        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);

                        }
                }
            });

}

}

Bu benim açılış ekranı düzenim:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ImageView android:id="@+id/splashscreen" android:layout_width="wrap_content"
        android:layout_height="fill_parent"
        android:background="@android:color/white"
        android:src="@drawable/splash"
        android:layout_gravity="center"/>
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Hello World, splash"/>
</LinearLayout>

This is my fullscreen layout
    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#0099cc"
        >
        <TextView
            android:id="@+id/fullscreen_content_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center"
            android:keepScreenOn="true"
            android:text="@string/dummy_content2"
            android:textColor="#33b5e5"
            android:textSize="50sp"
            android:textStyle="bold" />

    </FrameLayout>

umarım bu sana yardımcı olmuştur


1

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

Aktivite :

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

AndroidManifests:

 <activity android:name=".LoginActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:label="@string/title_activity_login"
            android:theme="@style/FullscreenTheme"
            ></activity>

1

Boş bir etkinlik oluşturun ve içine iki satır ekleyin onCreate.

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // full screen activity
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getSupportActionBar().hide();

        setContentView(R.layout.activity_main);
    }
    ...
}

1

OnCreate () içinde setContentView öğesinden sonra bu yöntemi kullanın ve getWindow () ile Window nesnesini iletin .

    public void makeActivityFullScreen(Window window){
    View decorView = window.getDecorView();
    //        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
       window.getAttributes().layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
    }
    decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
            | View.SYSTEM_UI_FLAG_FULLSCREEN
            | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
            | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    );
}

Bu kod çentik ekranı için de çalışacaktır. Çentik tam ekran kontrol etmek için android P gerekir ama bir çentik ekran telefonunuz varsa o zaman ayarına gidin -> Ekran ayarı -> uygulama ekran oranı ---> uygulamanızı seçin ---> güvenli iki seçenek olacak ekran ve tam ekran, tam ekran seçin ve uygulamayı çalıştırın, android Pie olmadan da notch tam ekran görebilirsiniz


1

Etkinliğinizi tam ekran yapmak için şunları yapın:

    // add following lines before setContentView
    // to hide toolbar
                if(getSupportActionBar()!=null)
                    getSupportActionBar().hide();
    //to hide status bar
                getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);

Bu, araç çubuğunu ve durum çubuğunu gizler.

Ancak bazı durumlarda, durum çubuğunu şeffaf bir arka planla göstermek isteyebilirsiniz, bu durumda şunu yapın:

// add following lines before setContentView
// to hide toolbar
if(getSupportActionBar()!=null)
   getSupportActionBar().hide();
// to make status bar transparent
getWindow().setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);

Araç çubuğunu gizlemek için başka bir alternatif getSupportActionBar().hide():

  1. Uygulama temasının üst öğesini değiştirerek araç çubuğunu kaldırın:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">

  1. Araç çubuğunu yalnızca bir etkinlikten kaldırmak istiyorsanız manifest'e gidin, etkinlik etiketi altında bunu ekleyin: android:theme="@style/Theme.AppCompat.Light.NoActionBar"

Kotlin sevenler için neden uzantı işlevlerini kullanmıyorsunuz:

İlk durum için:

fun AppCompatActivity.makeItFullScreenStatusBarVisible(){
    supportActionBar?.hide()
    window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS)
}

Ve bunu daha önce arayın setContentView:

makeItFullScreenStatusBarVisible()

İkincisi için:

fun AppCompatActivity.makeItFullScreenStatusBarHidden(){
    supportActionBar?.hide()
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)
}

Ve daha önce arayın setContentView:

makeItFullScreenStatusBarHidden()

0

Android 10'da hiçbiri benim için çalışmadı.

Ama ben mükemmel çalıştı (oncreate 1. satır):

    View decorView = getWindow().getDecorView();
    int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE;
    decorView.setSystemUiVisibility(uiOptions);

    setContentView(....);

    if (getSupportActionBar() != null) {
        getSupportActionBar().hide();
    }

zevk almak :)


0

İçeriği çentik veya kesme alanı üzerinden görüntülemek için. Bu dokümanlardan yardımcı olabilir:

LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES - İçerik hem portre hem de manzara modlarında kesme alanına dönüşür.

Benim için kilit nokta aktivite tarzındaki şu çizgiydi:

// Important to draw through the cutouts
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 

Benim için sürükleyici modda bir görüntü göstermek istedim. Tıkladığımda, sistem arayüzünün (durum ve gezinme çubukları) görünmesini istiyorum.

İşte benim çözümüm:

1- Faaliyette, sistem kullanıcı arayüzünü göstermek / gizlemek için bazı yöntemler (durum / gezinme çubukları)

private fun hideSystemUI() {
    sysUIHidden = true
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
            or View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
            // Hide the nav bar and status bar
            or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // Hide nav bar
            or View.SYSTEM_UI_FLAG_FULLSCREEN // Hide status bar
            )
}


private fun showSystemUI() {
    sysUIHidden = false
    window.decorView.systemUiVisibility = (
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
            // Set the content to appear under the system bars so that the
            // content doesn't resize when the system bars hide and show.
            or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // layout Behind nav bar
            or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // layout Behind status bar
            )
}

2- Bunun xml düzeninizin kök görünümünde olduğundan emin olun

android:fitsSystemWindows="false"

3- Tam Ekran Etkinliği Stili, gösterildiğinde durum / gezinme çubuklarına yarı saydam bir arka plan verecektir:

<style name="FullscreenTheme" parent="AppTheme">
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
    <item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
    <item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
    <item name="android:statusBarColor">#50000000</item>
    <item name="android:navigationBarColor">#50000000</item>
    // Important to draw behind cutouts
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> 
</style>

<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/sysTransparent</item>
</style>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.