Skip to content

Commit

Permalink
[ +] 增加显示隐藏状态栏, [ *] 获取状态栏高度方法开放出去
Browse files Browse the repository at this point in the history
  • Loading branch information
yangsanning committed Dec 26, 2019
1 parent ceb65a9 commit 8613763
Show file tree
Hide file tree
Showing 10 changed files with 207 additions and 68 deletions.
3 changes: 3 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,8 @@
<activity android:name=".page.TransparentActivity"/>
<activity android:name=".page.ColorActivity"/>
<activity android:name=".page.GradientActivity"/>
<activity
android:name=".page.ShowHideStatusBarActivity"
android:theme="@style/ShowHideStatusBarActivityTheme" />
</application>
</manifest>
23 changes: 14 additions & 9 deletions app/src/main/java/ysn/com/statusbarutils/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import ysn.com.statusbarutils.page.ColorActivity;
import ysn.com.statusbarutils.page.FragmentIndexActivity;
import ysn.com.statusbarutils.page.GradientActivity;
import ysn.com.statusbarutils.page.ShowHideStatusBarActivity;
import ysn.com.statusbarutils.page.TransparentActivity;
import ysn.com.statusbarutils.utils.DeviceUtils;
import ysn.com.statusbarutils.utils.ResUtils;
Expand All @@ -30,18 +31,19 @@ protected void onCreate(Bundle savedInstanceState) {

TextView deviceInfoTextView = findViewById(R.id.main_activity_device_info);
deviceInfoTextView.setText(ResUtils.getStringFormat(R.string.text_device_info,
DeviceUtils.getDeviceBrand(),
DeviceUtils.getSystemModel(),
DeviceUtils.getSystemVersion()
DeviceUtils.getDeviceBrand(),
DeviceUtils.getSystemModel(),
DeviceUtils.getSystemVersion()
));

setOnClickListener(R.id.main_activity_skip_color,
R.id.main_activity_skip_transparent,
R.id.main_activity_skip_gradient,
R.id.main_activity_skip_fragment,
R.id.main_activity_light_mode,
R.id.main_activity_dark_mode,
R.id.main_activity_skip_color);
R.id.main_activity_skip_transparent,
R.id.main_activity_skip_gradient,
R.id.main_activity_skip_fragment,
R.id.main_activity_light_mode,
R.id.main_activity_dark_mode,
R.id.main_activity_skip_color,
R.id.main_activity_show_hide_status_bar);
}

private void setOnClickListener(@IdRes int... idResArray) {
Expand Down Expand Up @@ -73,6 +75,9 @@ public void onClick(View view) {
StatusBarUtils.setColor(this, ResUtils.getColor(R.color.color_black1), toolbar);
StatusBarUtils.setDarkMode(MainActivity.this);
break;
case R.id.main_activity_show_hide_status_bar:
startActivity(ShowHideStatusBarActivity.class);
break;
default:
break;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package ysn.com.statusbarutils.page;

import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import ysn.com.statusbar.StatusBarUtils;
import ysn.com.statusbarutils.R;
import ysn.com.statusbarutils.utils.DeviceUtils;

/**
* @Author yangsanning
* @ClassName ShowHideStatusBarActivity
* @Description 显示隐藏状态栏
* @Date 2019/12/26
* @History 2019/12/26 author: description:
*/
public class ShowHideStatusBarActivity extends Activity implements View.OnClickListener {

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_hide_status_bar);

findViewById(R.id.show_hide_status_bar_activity_show).setOnClickListener(this);
Button hideBarView = findViewById(R.id.show_hide_status_bar_activity_hide);
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) hideBarView.getLayoutParams();
params.bottomMargin = DeviceUtils.getNavigationBarHeight(this);
hideBarView.setOnClickListener(this);
}

@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.show_hide_status_bar_activity_show:
StatusBarUtils.showStatusBar(this);
break;
case R.id.show_hide_status_bar_activity_hide:
StatusBarUtils.hideStatusBar(this);
break;
default:
break;
}
}
}
13 changes: 13 additions & 0 deletions app/src/main/java/ysn/com/statusbarutils/utils/DeviceUtils.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package ysn.com.statusbarutils.utils;

import android.content.Context;
import android.content.res.Resources;

/**
* @Author yangsanning
* @ClassName DeviceUtils
Expand Down Expand Up @@ -29,4 +32,14 @@ public static String getSystemModel() {
public static String getDeviceBrand() {
return android.os.Build.BRAND;
}

/**
* 获取虚拟键盘高度
*/
public static int getNavigationBarHeight(Context activity) {
Resources resources = activity.getResources();
int resourceId = resources.getIdentifier("navigation_bar_height",
"dimen", "android");
return resources.getDimensionPixelSize(resourceId);
}
}
110 changes: 61 additions & 49 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -13,62 +13,74 @@
app:title="@string/app_name"
app:titleTextColor="@color/color_white" />

<LinearLayout
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="10dp">
android:layout_height="match_parent">

<TextView
android:id="@+id/main_activity_device_info"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:padding="5dp"
android:textAllCaps="false" />
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="5dp">

<Button
android:id="@+id/main_activity_skip_color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_color" />
<TextView
android:id="@+id/main_activity_device_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
android:textAllCaps="false" />

<Button
android:id="@+id/main_activity_skip_transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_translucent" />
<Button
android:id="@+id/main_activity_skip_color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_color" />

<Button
android:id="@+id/main_activity_skip_gradient"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_gradient" />
<Button
android:id="@+id/main_activity_skip_transparent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_translucent" />

<Button
android:id="@+id/main_activity_skip_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_fragment" />
<Button
android:id="@+id/main_activity_skip_gradient"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_gradient" />

<Button
android:id="@+id/main_activity_light_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_light_mode"
android:textAllCaps="false" />
<Button
android:id="@+id/main_activity_skip_fragment"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_fragment" />

<Button
android:id="@+id/main_activity_dark_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:text="@string/text_dark_mode"
android:textAllCaps="false" />
</LinearLayout>
<Button
android:id="@+id/main_activity_light_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_light_mode"
android:textAllCaps="false" />

<Button
android:id="@+id/main_activity_dark_mode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_dark_mode"
android:textAllCaps="false" />

<Button
android:id="@+id/main_activity_show_hide_status_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="@string/text_show_hide_status_bar"
android:textAllCaps="false" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</LinearLayout>
34 changes: 34 additions & 0 deletions app/src/main/res/layout/activity_show_hide_status_bar.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<ImageView
android:id="@+id/transparent_activity_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:src="@mipmap/image1" />

<Button
android:id="@+id/show_hide_status_bar_activity_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/show_hide_status_bar_activity_hide"
android:layout_marginStart="20dp"
android:layout_marginEnd="20dp"
android:text="@string/text_show_status_bar"
android:textAllCaps="false" />

<Button
android:id="@+id/show_hide_status_bar_activity_hide"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="20dp"
android:text="@string/text_hide_status_bar"
android:textAllCaps="false" />
</RelativeLayout>
3 changes: 3 additions & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,7 @@
<string name="text_fragment">Fragment演示</string>
<string name="text_light_mode">Light Mode(Android6.0及以上有效)</string>
<string name="text_dark_mode">Dark Mode(Android6.0及以上有效)</string>
<string name="text_show_hide_status_bar">显示隐藏状态栏</string>
<string name="text_show_status_bar">显示状态栏</string>
<string name="text_hide_status_bar">隐藏状态栏</string>
</resources>
5 changes: 5 additions & 0 deletions app/src/main/res/values/styles.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,9 @@
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@color/color_background</item>
</style>

<style name="ShowHideStatusBarActivityTheme" parent="AppTheme">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
</style>
</resources>
4 changes: 2 additions & 2 deletions configs.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ ext {
minSdkVersion : 19,
compileSdkVersion: 28,
targetSdkVersion : 28,
versionCode : 10000,
versionName : "1.0.0",
versionCode : 10001,
versionName : "1.0.1",
]

dependVersion = [
Expand Down
32 changes: 24 additions & 8 deletions statusbar/src/main/java/ysn/com/statusbar/StatusBarUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,30 @@ public static void setLightMode(@NonNull Activity activity) {
darkMode(activity.getWindow(), false);
}


/**
* 获取状态栏高度
*/
public static int getStatusBarHeight(Context context) {
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}

/**
* 显示状态栏
*/
public static void showStatusBar(Activity activity) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}

/**
* 隐藏状态栏
*/
public static void hideStatusBar(Activity activity) {
activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}

@TargetApi(Build.VERSION_CODES.M)
private static void darkMode(Window window, boolean dark) {
if (isFlyme4()) {
Expand Down Expand Up @@ -266,12 +290,4 @@ private static void setRootView(Activity activity, boolean fitSystemWindows) {
}
}
}

/**
* 获取状态栏高度
*/
private static int getStatusBarHeight(Context context) {
int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
return context.getResources().getDimensionPixelSize(resourceId);
}
}

0 comments on commit 8613763

Please sign in to comment.