得到statusBarHeight, titleBarHeight, DisplayWidth, DisplayHeight:

本文介绍了如何在Android中获取statusBarHeight、titleBarHeight以及DisplayWidth和DisplayHeight。通过调用getResources().getIdentifier获取statusBarHeight,使用getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop()计算TitleBar高度,利用getWindowManager().getDefaultDisplay().getHeight()和自定义方法获取屏幕显示区域高度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        requestWindowFeature(Window.FEATURE_NO_TITLE);
//        requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
        setContentView(R.layout.activity_main);
//        getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);

    a. 得到statusBarHeight:
        public static int getStatusBarHeight(Context context) {
        int result = 0;
        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen",
                "android");
         if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
         }
         return result;
        }

    b.得到TitleBar高度
            int contentViewTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
        int titleBarHeight = contentViewTop - statusBarHeight;
    
    c.得到屏幕可显示区域高度
    public static int getDisplayHeight(Context context) {
        Rect frame = new Rect();
        ((Activity)context).getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
        int statusBarHeight = getStatusBarHeight(context);
    //得到屏幕的整个高度
        int mFullDisplayHeight = ((Activity)context).getWindowManager().getDefaultDisplay()
                .getHeight();

    //得到可显示屏幕高度
        int mDisplayHeight = mFullDisplayHeight - statusBarHeight - titleBarHeight;
        // Log.d("TEST", "status bar height:" + statusBarHeight);
        // Log.d("TEST", "mFullDisplayHeight====" + mFullDisplayHeight);
        return mDisplayHeight;
    }
    
    verdion> 3.2
        public static void getDisplaySize(Context context) {
        Display display = ((Activity)context).getWindowManager().getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        int height = size.y;
        Log.d("Display sise", "width:" + width + "---height:" + height);
    }
    
    
    private void getScreenSize() {
        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int screenWidth = metric.widthPixels;
        int screenHeight = metric.heightPixels;
        Log.d("Screen", "width: =" + screenWidth + " Height: =" + screenHeight);
    }
InsetsController: onStateChanged: InsetsState: {mDisplayFrame=Rect(0, 0 - 720, 1604), mDisplayCutout=DisplayCutout{insets=Rect(0, 65 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(322, 0 - 398, 65), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=720 displayHeight=1604 physicalDisplayWidth=720 physicalDisplayHeight=1604 density={2.0} cutoutSpec={M -38,0 L -38,65 L 38,65 L 38,0 Z} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}} sideOverrides={}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=40, center=Point(40, 40)}, RoundedCorner{position=TopRight, radius=40, center=Point(680, 40)}, RoundedCorner{position=BottomRight, radius=40, center=Point(680, 1564)}, RoundedCorner{position=BottomLeft, radius=40, center=Point(40, 1564)}]} mRoundedCornerFrame=Rect(0, 0 - 720, 1604), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(568, 0 - 728, 65) rotation=0}, mDisplayShape=DisplayShape{ spec=1406003047 displayWidth=720 displayHeight=1604 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mExtraDisplayCutoutMode=-1, mSources= { InsetsSource: {3 mType=ime mFrame=[0,0][0,0] mVisible=false mFlags= mSideHint=NONE mBoundingRects=null}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][720,65] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {79e90001 mType=navigationBars mFrame=[0,1604][720,1604] mVisible=true mFlags=SUPPRESS_SCRIM mSideHint=NONE mBoundingRects=null}, InsetsSource: {79e90004 mType=systemGestures mFrame=[0,0][60,1604] mVisible=true mFlags= mSideHint=LEFT mBoundingRects=null}, InsetsSource: {79e90005 mType=mandatorySystemGestures mFrame=[0,1540][720,1604] mVisible=true mFlags= mSideHint=BOTTOM mBoundingRects=null}, InsetsSource: {79e90006 mType=tappableElement mFrame=[0,0][0,0] mVisible=true mFlags= mSideHint=NONE mBoundingRects=null}, InsetsSource: {79e90024 mType=systemGestures mFrame=[660,0][720,1604] mVisible=true mFlags= mSideHint=RIGHT mBoundingRects=null}, InsetsSource: {7f320000 mType=statusBars mFrame=[0,0][720,65] mVisible=false mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {7f320005 mType=mandatorySystemGestures mFrame=[0,0][720,89] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null}, InsetsSource: {7f320006 mType=tappableElement mFrame=[0,0][720,65] mVisible=true mFlags= mSideHint=TOP mBoundingRects=null} }这段log反馈了什么信息?
最新发布
03-29
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值