Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Android Tam Ekran konusunda bir örnektir.
#1
Thumbs Up 
My Merhaba.

Konuyu kanatmadan soruna odaklı bir yaklaşım için konu açıyorum lütfen konu Delphi sınırlarında kalsın. 
Delphican forumun çözüm odaklı araştırmacı bir forum olma vasfını beğeniyorum. 

Bugün uzun zamandır boş kalabildiğim ender günlerden biriydi. Geçenlerde konu edilen Android tam ekran konusunu mercek altına aldım.

Fullscreen deyince alttaki navigasyon bar devre dışı kalıyor. Ancak buna rağmen sorunun çözülmediği kilitlenen başlıkta bildirildiğinden biraz daha anlamaya çalıştım.

Sanırım tepedeki sistem barını da dahil etme amaçlı bir soruydu. Github linklerinden birinde benzer sorun dil getirilmiş ve çözüm üretilmiş.

github linkini de buraya bırakıyorum. Test için hazırladığım kod daha aşağıdaki şekildedir. 

Mobil Cihaz :  Samsung S24+ ( Android 14 )


silsgxnnvum4islnzorw.gif

TEST Proje kodu


uses iPub.FMX.SystemBars;

procedure TForm1.Button1Click(Sender: TObject);
const
{$j+}
  LBack_State
    : word = 0;
  LBack_StatusBarBackgroundColor
    : Integer = -1;
  LBack_NavigationBarBackgroundColor
    : Integer = -1;
  LBack_Visibility
    : TipFormSystemBars.TVisibilityMode = TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;
{$j-}
begin
//  self.FullScreen := not self.FullScreen;

  if LBack_State = 0 then
  begin // backup section
    LBack_State := 2;

    LBack_StatusBarBackgroundColor
      := self.SystemBars.StatusBarBackgroundColor;

    LBack_NavigationBarBackgroundColor
      := self.SystemBars.NavigationBarBackgroundColor;

    LBack_Visibility := self.SystemBars.Visibility;
  end;

  case LBack_State of
  1:
    begin
      LBack_State := 2;
      self.SystemBars.StatusBarBackgroundColor
        := LBack_StatusBarBackgroundColor;

      self.SystemBars.NavigationBarBackgroundColor
        := LBack_NavigationBarBackgroundColor;

      self.SystemBars.Visibility
        := LBack_Visibility;
    end;
  2:
    begin
      LBack_State := 1;
      self.SystemBars.StatusBarBackgroundColor
        := TAlphaColors.Null;

      self.SystemBars.NavigationBarBackgroundColor
        := TAlphaColors.Null;

      self.SystemBars.Visibility
        := TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;

    end;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Showmessage( 'Hello World' );
end;

Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#2
Teşekkürler @mrmarman bey.
Cevapla
#3
yanlış hatırlamıyorsam bu olayı android manifest değerlerinden yapabiliyorduk.
android de immersive mode olarak geçiyordu.

şu şekilde bir style i vardı, ama kodla açıp kapatılabilmesi daha güzel olmuş doğrusu.

<?xml version="1.0" encoding="utf-8"?>
<resources>


 <color name="colorWhite">#000001</color>

 <style name="myAppTheme" parent="@android:style/Theme.Material.Light.NoActionBar"> 

   <item name="android:statusBarColor">#ffffffff</item>
   <item name="android:windowLightStatusBar">true</item>

   <item name="android:windowTranslucentStatus">true</item>
   <item name="android:windowTranslucentNavigation">true</item>

   <item name="android:windowDrawsSystemBarBackgrounds">false</item>
   <item name="android:colorPrimary">#ff2b2e38</item>
   <item name="android:colorAccent">#ff0288d1</item>

   <item name="android:windowBackground">@drawable/splash_image_def</item>
   <item name="android:windowNoTitle">true</item>

   <item name="android:navigationBarColor">@color/colorWhite</item>
 

 </style>

</resources>
Cevapla
#4
Aynen dediğiniz şekilde daha önce Splash konusunda style ile deneyimlemiştim. Araştırma yaparken o yönde bir çözümü runtime oluşturmak üzere çalışmayı yoğunlaştırdım.

Bu linki görünce alternatif olarak arşivimizde bulunsun dedim. Uygulaması style tekniğine göre daha pratik geldi. Android versiyon farklarında tepkisini merak ettim ancak mevcut güncel sürümdeki performansı ümit verici
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
@mrmarman Tam ekranda saat ve pil bir türlü gitmiyor buy durum neden olur?
Cevapla
#6
Bir şimdi yazacağımı denememişsinizdir iddia ederim ispatlayamam ama...
Smile

      self.SystemBars.Visibility
     //:= TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;
       := TipFormSystemBars.TVisibilityMode.Invisible;


Genelde (ben şahsen pil ve servis durumunu görmek isterim) istemezseniz bu şekilde yaparsınız.

v1xvue8542ld6avzyxaz.gif
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
(06-03-2025, Saat: 19:44)mrmarman Adlı Kullanıcıdan Alıntı: Bir şimdi yazacağımı denememişsinizdir iddia ederim ispatlayamam ama...
Smile

      self.SystemBars.Visibility
     //:= TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;
       := TipFormSystemBars.TVisibilityMode.Invisible;


Genelde (ben şahsen pil ve servis durumunu görmek isterim) istemezseniz bu şekilde yaparsınız.

v1xvue8542ld6avzyxaz.gif



Teşekkür ederim, SystemBars özelliği tanımlı olmadığından hata alıyorum. Delphi 12 community edition kullanıyorum.
Cevapla
#8
mesajınızı okuyunca
(06-03-2025, Saat: 18:35)Mete Adlı Kullanıcıdan Alıntı: @mrmarman Tam ekranda saat ve pil bir türlü gitmiyor buy durum neden olur?

sistemi anladınız çalıştırdınız ancak formunuzun system bar altında kalıyor (saat, şebeke vb.) olduğundan şikayetçi olduğunuzu sanmıştım. 

Sorunuzu daha somut şekilde örnek kodu hiç çalıştıramadım demeliydiniz.

İlk mesaja dönüp github linkinden unitleri indirip proje klasörünüze kopyalayın ve dpr dosyanıza ekleyin.

o eksik unitler tamam olacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#9
(26-01-2025, Saat: 14:28)mrmarman Adlı Kullanıcıdan Alıntı: My Merhaba.

Konuyu kanatmadan soruna odaklı bir yaklaşım için konu açıyorum lütfen konu Delphi sınırlarında kalsın. 
Delphican forumun çözüm odaklı araştırmacı bir forum olma vasfını beğeniyorum. 

Bugün uzun zamandır boş kalabildiğim ender günlerden biriydi. Geçenlerde konu edilen Android tam ekran konusunu mercek altına aldım.

Fullscreen deyince alttaki navigasyon bar devre dışı kalıyor. Ancak buna rağmen sorunun çözülmediği kilitlenen başlıkta bildirildiğinden biraz daha anlamaya çalıştım.

Sanırım tepedeki sistem barını da dahil etme amaçlı bir soruydu. Github linklerinden birinde benzer sorun dil getirilmiş ve çözüm üretilmiş.

github linkini de buraya bırakıyorum. Test için hazırladığım kod daha aşağıdaki şekildedir. 

Mobil Cihaz :  Samsung S24+ ( Android 14 )


silsgxnnvum4islnzorw.gif

TEST Proje kodu


uses iPub.FMX.SystemBars;

procedure TForm1.Button1Click(Sender: TObject);
const
{$j+}
  LBack_State
    : word = 0;
  LBack_StatusBarBackgroundColor
    : Integer = -1;
  LBack_NavigationBarBackgroundColor
    : Integer = -1;
  LBack_Visibility
    : TipFormSystemBars.TVisibilityMode = TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;
{$j-}
begin
//  self.FullScreen := not self.FullScreen;

  if LBack_State = 0 then
  begin // backup section
    LBack_State := 2;

    LBack_StatusBarBackgroundColor
      := self.SystemBars.StatusBarBackgroundColor;

    LBack_NavigationBarBackgroundColor
      := self.SystemBars.NavigationBarBackgroundColor;

    LBack_Visibility := self.SystemBars.Visibility;
  end;

  case LBack_State of
  1:
    begin
      LBack_State := 2;
      self.SystemBars.StatusBarBackgroundColor
        := LBack_StatusBarBackgroundColor;

      self.SystemBars.NavigationBarBackgroundColor
        := LBack_NavigationBarBackgroundColor;

      self.SystemBars.Visibility
        := LBack_Visibility;
    end;
  2:
    begin
      LBack_State := 1;
      self.SystemBars.StatusBarBackgroundColor
        := TAlphaColors.Null;

      self.SystemBars.NavigationBarBackgroundColor
        := TAlphaColors.Null;

      self.SystemBars.Visibility
        := TipFormSystemBars.TVisibilityMode.VisibleAndOverlap;

    end;
  end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Showmessage( 'Hello World' );
end;


Hocam merhabalar,

Bu örnekte StatusBar ve Navigation Barın Font Rengi Beyaz.
  
Örneğinizdeki gibi form rengi koyu olduğunda problem olmuyor ama

Formun Rengini Beyaz Yaparsak Altta ve üstte hiç bir şey gözükmüyor.

Font Rengini nasıl değiştirebiliriz?
Cevapla
#10
@barissagir

Sizin için denedim haklısınız form/yüzey beyaz olunca StatusBar / NavigasyonBar formumuzun üzerinde görünür bıraktığımızda yazılar görünmüyor.
Yazıların rengini (TextColor) değiştirmede program içerisinden başarılı olamadım. Style ile mümkün olabilir ama buradaki amacımız program içerisinden yapabilmek olduğu için denemeleri bu yönde sürdürdüm.
Sadece aşağıdaki şekilde StatusBar ve NavigasyonBar ( görünür bırakılarak ) rengini değiştirmede başarılı oldu.


  self.SystemBars.StatusBarBackgroundColor      := TAlphaColors.Yellow;
  self.SystemBars.NavigationBarBackgroundColor  := TAlphaColors.Black;



Araştırma yapınca bunun yeni android sürümlerinde WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS TRUE/FALSE yapılarak mümkün olduğunu okudum.
ref : bu developer.android link

Bu durumda font rengini değiştirmek üzerine bir çözüm sunan olana kadar size naçizane önerim, formunuzun renginin yukarıdan aşağıya doğru koyudan açığa bir renk skalası ( graident ) fon kullanmanız yönündedir. 

Aşağıdakini beğenmesem de sadece fikrin ne olduğu hakkındaki görselleştirmek amaçlı. 
Örnekte NavigasyonBar açık ama bildirdiğiniz gibi formun beyaz kısımlarına denk geldiğinden görünmüyor, StatusBar ise maviye denk geldiğinden görünüyor.



rd5eq3bi2hpylisy6qvv.jpg
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Android işlem öneriliyor uyarısı! Coban 9 963 07-08-2025, Saat: 12:07
Son Yorum: RAD Coder
  FMX Android Adaptive Icons kullanabilir miyiz? egeven 1 1.833 30-06-2025, Saat: 21:46
Son Yorum: emozgun
  Fmx Android ve IOS Custom Font Kullanımı frmman 8 757 04-06-2025, Saat: 20:57
Son Yorum: Mr.X
  Ekran Yakalama Coban 2 321 26-05-2025, Saat: 13:45
Son Yorum: Coban
  Android Veriabanı hatası mkucuktepe@msn.com 1 284 10-05-2025, Saat: 23:13
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi