Yanıtlar:
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.xml
dosyanı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
@android:style/Theme.Holo.Light.NoActionBar.Fullscreen
AppCompatActivity
, daha requestWindowFeature
önce koymanız gerekir super.onCreate
. Aksi takdirde, alacaksınız:android.util.AndroidRuntimeException: requestFeature() must be called before adding content
Denilen bir tekniği var sürükleyici Tam Ekran Modu mevcut KitKat'ta .
@android:style/Theme.NoTitleBar.Fullscreen
Zaten 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>
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);
}
AppCompat ve ActionBarActivity kullanıyorsanız, bunu kullanın
getSupportActionBar().hide();
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.
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" />
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:
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)!
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 ...
Ö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
AndroidManifest.xml
<activity ...
android:theme="@style/FullScreenTheme"
>
</activity>
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)
...
}
}
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
.
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);
?
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);
}
@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.
İşte bir örnek kod. Belirli parçaları gizlemek / göstermek için bayrakları açabilir / kapatabilirsiniz.
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 :
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);
}
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) }
İ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.
@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);
}
}
İç 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.
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">
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);
}
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();
}
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
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>
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);
}
...
}
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
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()
:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
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()
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 :)
İç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>