[Delphi] 델파이 안드로이드 상태바, 네비게이션 바 높이 구하기

    728x90

    안녕하세요

    로로봉입니다 : )

    델파이에서 안드로이드 휴대폰의 상태바 높이 및 네비게이션바 높이, 활성화 유무를 구하는 방법을 알아보도록 하겠습니다.

    우선 use절에 안드로이드 API 를 추가해줍니다.

    uses
      Androidapi.Jni.JavaTypes, //JObject
      Androidapi.Jni.Os, //JVibrator
      Androidapi.JNI.Media, //JAudioManager
      Androidapi.Helpers, //SharedActivity
      Androidapi.Jni.GraphicsContentViewText, //TJContext
      Androidapi.Jni.App, //TJActivity
      Androidapi.JNIBridge, //ILocalObject

    특정 프로시저에서 아래와 같이 상태 값을 조회하면 됩니다.

    procedure ()
    var
      iStatusBar : Integer;
      iNavigationBar : Integer;
      bHasNavigationBar : Boolean;
      ResourceID : Integer;
    begin
      ResourceID := 0;
      ResourceID := TAndroidHelper.Context.getResources.getIdentifier(
    
      StringToJString('status_bar_height'),
      StringToJString('dimen'),
      StringToJString('android'));
    
      if ResourceID <> 0 then
        iStatusBar := TAndroidHelper.Context.getResources.getDimensionPixelSize(ResourceID);
    
      ResourceID := 0;
      ResourceID := TAndroidHelper.Context.getResources.getIdentifier(
    
      StringToJString('navigation_bar_height'),
      StringToJString('dimen'),
      StringToJString('android'));
    
      if ResourceID <> 0 then
        iNavigationBar := TAndroidHelper.Context.getResources.getDimensionPixelSize(ResourceID);
    
      ResourceID := 0;
      ResourceID := TAndroidHelper.Context.getResources.getIdentifier(
    
      StringToJString('config_showNavigationBar'),
      StringToJString('bool'),
      StringToJString('android'));
    
      if ResourceID <> 0 then
        bHasNavigationBar := TAndroidHelper.Context.getResources.getBoolean(ResourceID);
    end;

    iStatusBar, iNavigationBar, bHasNavigationBar 로 상태바 높이, 네비게이션바 높이, 네이게이션바 활성 유무 값이 저장됩니다.

    Android 스마트폰의 상태값을 불러오는 API를 사용하는 것이므로 프로젝트의 Permissions의 Read phone state를 반드시 true 해주어야합니다.

    [ 그림 1 ] - Project User Permissions

     

    좋아요♥ + 구독 부탁드립니다 : )

    728x90
    반응형

    댓글