From 967c6fb5ac7d554fa92222aaf9997acd545e429f Mon Sep 17 00:00:00 2001 From: Eugeniu Olog Date: Fri, 17 Apr 2020 18:34:05 +0200 Subject: [PATCH] fixed statusbar implementation: `r.getIdentifier("status_bar_height", "dimen", "android")` was returning always about 24 dp, with notch not being considered. A best approach is to use WindowInset API --- .../retromusic/views/StatusBarView.java | 59 ------------------- .../monkey/retromusic/views/StatusBarView.kt | 30 ++++++++++ 2 files changed, 30 insertions(+), 59 deletions(-) delete mode 100644 app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.java create mode 100644 app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt diff --git a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.java b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.java deleted file mode 100644 index 8eaf325d4..000000000 --- a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright (c) 2019 Hemanth Savarala. - * - * Licensed under the GNU General Public License v3 - * - * This is free software: you can redistribute it and/or modify it under - * the terms of the GNU General Public License as published by - * the Free Software Foundation either version 3 of the License, or (at your option) any later version. - * - * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; - * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - * See the GNU General Public License for more details. - */ - -package code.name.monkey.retromusic.views; - -import android.content.Context; -import android.content.res.Resources; -import android.util.AttributeSet; -import android.view.View; - -import androidx.annotation.NonNull; - -public class StatusBarView extends View { - - - public StatusBarView(@NonNull Context context) { - super(context); - init(context); - } - - public StatusBarView(@NonNull Context context, @NonNull AttributeSet attrs) { - super(context, attrs); - init(context); - } - - public StatusBarView(@NonNull Context context, @NonNull AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - public static int getStatusBarHeight(@NonNull Resources r) { - int result = 0; - int resourceId = r.getIdentifier("status_bar_height", "dimen", "android"); - if (resourceId > 0) { - result = r.getDimensionPixelSize(resourceId); - } - return result; - } - - private void init(Context context) { - - } - - @Override - protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), getStatusBarHeight(getResources())); - } -} \ No newline at end of file diff --git a/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt new file mode 100644 index 000000000..9a5833f79 --- /dev/null +++ b/app/src/main/java/code/name/monkey/retromusic/views/StatusBarView.kt @@ -0,0 +1,30 @@ +package code.name.monkey.retromusic.views + +import android.content.Context +import android.util.AttributeSet +import android.view.View + +class StatusBarView( + context: Context, + attrs: AttributeSet +) : View(context, attrs) { + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + if (isInEditMode){ + return + } + setOnApplyWindowInsetsListener { _, insets -> + val height = insets?.systemWindowInsetTop ?: 0 + setHeight(height) + insets + } + } + + private fun setHeight(px: Int) { + val params = layoutParams ?: return + params.height = px + layoutParams = params + } + +} \ No newline at end of file