Skip to content

Commit

Permalink
update 3.0.0-beta03
Browse files Browse the repository at this point in the history
  • Loading branch information
geyifeng committed May 14, 2019
1 parent 73f33ae commit 0007cd7
Show file tree
Hide file tree
Showing 61 changed files with 1,396 additions and 745 deletions.
15 changes: 10 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
![logo](https://github.com/gyf-dev/Screenshots/blob/master/ImmersionBar/readme_head.png)
# ImmersionBar -- android 4.4以上沉浸式实现
[![version](https://img.shields.io/badge/version-3.0.0--beta02-brightgreen.svg)](https://bintray.com/geyifeng/maven/immersionbar)[![author](https://img.shields.io/badge/author-gyf--dev-orange.svg)](https://github.com/gyf-dev)[![简书](https://img.shields.io/badge/%E7%AE%80%E4%B9%A6-HeLe%E5%B0%8F%E5%AD%90%E6%8B%BD-blue.svg)](https://www.jianshu.com/p/2a884e211a62)[![QQ群](https://img.shields.io/badge/QQ%E7%BE%A4-314360549-red.svg)]()
[![version](https://img.shields.io/badge/version-3.0.0--beta03-brightgreen.svg)](https://bintray.com/geyifeng/maven/immersionbar)[![author](https://img.shields.io/badge/author-gyf--dev-orange.svg)](https://github.com/gyf-dev)[![简书](https://img.shields.io/badge/%E7%AE%80%E4%B9%A6-HeLe%E5%B0%8F%E5%AD%90%E6%8B%BD-blue.svg)](https://www.jianshu.com/p/2a884e211a62)[![QQ群](https://img.shields.io/badge/QQ%E7%BE%A4-314360549-red.svg)]()

## 直接看效果图,最下面有各个版本的效果图
<img width="300" src="https://github.com/gyf-dev/Screenshots/blob/master/ImmersionBar/Screenshot_6.0.gif"/>
Expand All @@ -9,11 +9,11 @@
> android studio
```groovy
// 基础依赖包,必须要依赖
implementation 'com.gyf.immersionbar:immersionbar:3.0.0-beta02'
implementation 'com.gyf.immersionbar:immersionbar:3.0.0-beta03'
// fragment快速实现(可选)
implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0-beta02'
implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0-beta03'
// kotlin扩展(可选)
implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0-beta02'
implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0-beta03'
```
## 2.x版本使用说明
### [点我查看2.x版本使用说明](https://github.com/gyf-dev/ImmersionBar/blob/master/README_2.x.md)
Expand All @@ -22,7 +22,7 @@
### [点我查看版本说明](https://github.com/gyf-dev/ImmersionBar/wiki)

## 下载demo
### [点我下载immersionBar-3.0.0beta02.apk](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-3.0.0beta02.apk)
### [点我下载immersionBar-3.0.0beta02.apk](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-3.0.0beta03.apk)

## 关于使用AndroidX支持库
- 如果你的项目中使用了AndroidX支持库,请在你的gradle.properties加入如下配置,如果已经配置了,请忽略
Expand Down Expand Up @@ -114,6 +114,7 @@
}
})
.setOnNavigationBarListener(onNavigationBarListener) //导航栏显示隐藏监听,目前只支持华为和小米手机
.setOnBarListener(OnBarListener) //第一次调用和横竖屏切换都会触发,建议用来做刘海屏遮挡布局控件的问题
.addTag("tag") //给以上设置的参数打标记
.getTag("tag") //根据tag获得沉浸式参数
.reset() //重置所以沉浸式参数
Expand Down Expand Up @@ -347,6 +348,10 @@

是否是刘海屏

- public static boolean getNotchHeight(Activity activity)

刘海屏高度

- public static boolean isSupportStatusBarDarkFont()

判断当前设备支不支持状态栏字体设置为黑色
Expand Down
Binary file removed apk/immersionBar-3.0.0beta02.apk
Binary file not shown.
Binary file added apk/immersionBar-3.0.0beta03.apk
Binary file not shown.
6 changes: 3 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.30'
ext.immersionbar_version = '3.0.0-beta02'
ext.kotlin_version = '1.3.31'
ext.immersionbar_version = '3.0.0-beta03'
repositories {
google()
jcenter()
}
dependencies {

classpath 'com.android.tools.build:gradle:3.4.0'
classpath 'com.novoda:bintray-release:0.9'
classpath 'com.novoda:bintray-release:0.9.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
2 changes: 1 addition & 1 deletion gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#Fri Apr 26 14:31:21 CST 2019
#Tue May 14 14:36:23 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Expand Down
2 changes: 1 addition & 1 deletion immersionbar-ktx/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.novoda.bintray-release'

android {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,65 +17,99 @@ inline fun Activity.immersionBar(block: ImmersionBar.() -> Unit) = ImmersionBar.

inline fun Fragment.immersionBar(block: ImmersionBar.() -> Unit) = ImmersionBar.with(this).apply { block(this) }.init()

inline fun android.app.Fragment.immersionBar(block: ImmersionBar.() -> Unit) = ImmersionBar.with(this).apply { block(this) }.init()

inline fun DialogFragment.immersionBar(block: ImmersionBar.() -> Unit) = ImmersionBar.with(this).apply { block(this) }.init()

inline fun android.app.DialogFragment.immersionBar(block: ImmersionBar.() -> Unit) = ImmersionBar.with(this).apply { block(this) }.init()

inline fun Dialog.immersionBar(activity: Activity, block: ImmersionBar.() -> Unit) = ImmersionBar.with(activity, this).apply { block(this) }.init()

inline fun Activity.immersionBar(dialog: Dialog, block: ImmersionBar.() -> Unit) = ImmersionBar.with(this, dialog).apply { block(this) }.init()

inline fun Fragment.immersionBar(dialog: Dialog, block: ImmersionBar.() -> Unit) = activity?.run { ImmersionBar.with(this, dialog).apply { block(this) }.init() }
?: Unit

inline fun android.app.Fragment.immersionBar(dialog: Dialog, block: ImmersionBar.() -> Unit) = activity?.run { ImmersionBar.with(this, dialog).apply { block(this) }.init() }
?: Unit

fun Activity.immersionBar() = immersionBar { }

fun Fragment.immersionBar() = immersionBar { }

fun android.app.Fragment.immersionBar() = immersionBar { }

fun DialogFragment.immersionBar() = immersionBar { }

fun android.app.DialogFragment.immersionBar() = immersionBar { }

fun Dialog.immersionBar(activity: Activity) = immersionBar(activity) {}

fun Activity.immersionBar(dialog: Dialog) = immersionBar(dialog) {}

fun Fragment.immersionBar(dialog: Dialog) = immersionBar(dialog) {}

fun android.app.Fragment.immersionBar(dialog: Dialog) = immersionBar(dialog) {}

// dialog销毁
fun Activity.destroyImmersionBar(dialog: Dialog) = ImmersionBar.destroy(this, dialog)

fun Fragment.destroyImmersionBar(dialog: Dialog) = activity?.run { ImmersionBar.destroy(this, dialog) }
?: Unit

fun android.app.Fragment.destroyImmersionBar(dialog: Dialog) = activity?.run { ImmersionBar.destroy(this, dialog) }
?: Unit

// 状态栏扩展
val Activity.statusBarHeight get() = ImmersionBar.getStatusBarHeight(this)

val Fragment.statusBarHeight get() = activity?.run { ImmersionBar.getStatusBarHeight(this) } ?: 0
val Fragment.statusBarHeight get() = ImmersionBar.getStatusBarHeight(this)

val android.app.Fragment.statusBarHeight get() = ImmersionBar.getStatusBarHeight(this)

// 导航栏扩展
val Activity.navigationBarHeight get() = ImmersionBar.getNavigationBarHeight(this)

val Fragment.navigationBarHeight
get() = activity?.run { ImmersionBar.getNavigationBarHeight(this) } ?: 0
val Fragment.navigationBarHeight get() = ImmersionBar.getNavigationBarHeight(this)

val android.app.Fragment.navigationBarHeight get() = ImmersionBar.getNavigationBarHeight(this)

val Activity.navigationBarWidth get() = ImmersionBar.getNavigationBarWidth(this)

val Fragment.navigationBarWidth
get() = activity?.run { ImmersionBar.getNavigationBarWidth(this) } ?: 0
val Fragment.navigationBarWidth get() = ImmersionBar.getNavigationBarWidth(this)

val android.app.Fragment.navigationBarWidth get() = ImmersionBar.getNavigationBarWidth(this)

// ActionBar扩展
val Activity.actionBarHeight get() = ImmersionBar.getActionBarHeight(this)

val Fragment.actionBarHeight get() = activity?.run { ImmersionBar.getActionBarHeight(this) } ?: 0
val Fragment.actionBarHeight get() = ImmersionBar.getActionBarHeight(this)

val android.app.Fragment.actionBarHeight get() = ImmersionBar.getActionBarHeight(this)

// 是否有导航栏
val Activity.hasNavigationBar get() = ImmersionBar.hasNavigationBar(this)

val Fragment.hasNavigationBar get() = activity?.run { ImmersionBar.hasNavigationBar(this) } ?: false
val Fragment.hasNavigationBar get() = ImmersionBar.hasNavigationBar(this)

val android.app.Fragment.hasNavigationBar get() = ImmersionBar.hasNavigationBar(this)

// 是否有刘海屏
val Activity.hasNotchScreen get() = ImmersionBar.hasNotchScreen(this)

val Fragment.hasNotchScreen get() = activity?.run { ImmersionBar.hasNotchScreen(this) } ?: false
val Fragment.hasNotchScreen get() = ImmersionBar.hasNotchScreen(this)

val android.app.Fragment.hasNotchScreen get() = ImmersionBar.hasNotchScreen(this)

val View.hasNotchScreen get() = ImmersionBar.hasNotchScreen(this)

// 获得刘海屏高度
val Activity.notchHeight get() = ImmersionBar.getNotchHeight(this)

val Fragment.notchHeight get() = ImmersionBar.getNotchHeight(this)

val android.app.Fragment.notchHeight get() = ImmersionBar.getNotchHeight(this)

// 是否支持状态栏字体变色
val isSupportStatusBarDarkFont get() = ImmersionBar.isSupportStatusBarDarkFont()

Expand All @@ -87,54 +121,52 @@ val View.checkFitsSystemWindows get() = ImmersionBar.checkFitsSystemWindows(this

// 导航栏是否在底部
val Activity.isNavigationAtBottom get() = ImmersionBar.isNavigationAtBottom(this)
val Fragment.isNavigationAtBottom
get() = activity?.run { ImmersionBar.isNavigationAtBottom(this) } ?: false
val Fragment.isNavigationAtBottom get() = ImmersionBar.isNavigationAtBottom(this)

val android.app.Fragment.isNavigationAtBottom get() = ImmersionBar.isNavigationAtBottom(this)

// statusBarView扩展
fun Activity.fitsStatusBarView(view: View) = ImmersionBar.setStatusBarView(this, view)

fun Fragment.fitsStatusBarView(view: View) = activity?.run { ImmersionBar.setTitleBarMarginTop(this, view) }
?: Unit
fun Fragment.fitsStatusBarView(view: View) = ImmersionBar.setStatusBarView(this, view)

fun android.app.Fragment.fitsStatusBarView(view: View) = ImmersionBar.setStatusBarView(this, view)

// titleBar扩展
fun Activity.fitsTitleBar(view: View) = ImmersionBar.setTitleBar(this, view)
fun Activity.fitsTitleBar(vararg view: View) = ImmersionBar.setTitleBar(this, *view)

fun Fragment.fitsTitleBar(view: View) {
activity?.apply { ImmersionBar.setTitleBar(this, view) }
}
fun Fragment.fitsTitleBar(vararg view: View) = ImmersionBar.setTitleBar(this, *view)

fun Activity.fitsTitleBarMarginTop(view: View) = ImmersionBar.setTitleBarMarginTop(this, view)
fun android.app.Fragment.fitsTitleBar(vararg view: View) = ImmersionBar.setTitleBar(this, *view)

fun Fragment.fitsTitleBarMarginTop(view: View) = activity?.run { ImmersionBar.setTitleBarMarginTop(this, view) }
?: Unit
fun Activity.fitsTitleBarMarginTop(vararg view: View) = ImmersionBar.setTitleBarMarginTop(this, *view)

fun Fragment.fitsTitleBarMarginTop(vararg view: View) = ImmersionBar.setTitleBarMarginTop(this, *view)

fun android.app.Fragment.fitsTitleBarMarginTop(vararg view: View) = ImmersionBar.setTitleBarMarginTop(this, *view)

// 隐藏状态栏
fun Activity.hideStatusBar() = ImmersionBar.hideStatusBar(window)

fun Fragment.hideStatusBar() {
activity?.apply {
ImmersionBar.hideStatusBar(window)
}
}
fun Fragment.hideStatusBar() = activity?.run { ImmersionBar.hideStatusBar(window) } ?: Unit

fun android.app.Fragment.hideStatusBar() = activity?.run { ImmersionBar.hideStatusBar(window) }
?: Unit

// 显示状态栏
fun Activity.showStatusBar() = ImmersionBar.showStatusBar(window)

fun Fragment.showStatusBar() {
activity?.apply {
ImmersionBar.showStatusBar(window)
}
}
fun Fragment.showStatusBar() = activity?.run { ImmersionBar.showStatusBar(window) } ?: Unit

fun android.app.Fragment.showStatusBar() = activity?.run { ImmersionBar.showStatusBar(window) }
?: Unit

// 解决顶部与布局重叠问题,不可逆
fun Activity.setFitsSystemWindows() = ImmersionBar.setFitsSystemWindows(this)

fun Fragment.setFitsSystemWindows() {
activity?.apply {
ImmersionBar.setFitsSystemWindows(this)
}
}
fun Fragment.setFitsSystemWindows() = ImmersionBar.setFitsSystemWindows(this)

fun android.app.Fragment.setFitsSystemWindows() = ImmersionBar.setFitsSystemWindows(this)



2 changes: 1 addition & 1 deletion immersionbar-simple/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'

android {
compileSdkVersion 28
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public <T extends Activity> boolean hasActivity(Class<T> tClass) {
return false;
}

private void hideSoftKeyBoard(Activity activity) {
public void hideSoftKeyBoard(Activity activity) {
View localView = activity.getCurrentFocus();
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (localView != null && imm != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,33 @@
package com.gyf.immersionbar.simple;

import android.annotation.SuppressLint;
import android.app.Application;
import android.content.Context;
import android.content.Intent;

import com.gyf.immersionbar.simple.service.NetworkService;
import com.tencent.bugly.crashreport.CrashReport;

/**
* @author geyifeng
* @date 2017/8/4
*/
public class MyApp extends Application {

@SuppressLint("StaticFieldLeak")
private static Context context;

@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
// bugly
CrashReport.initCrashReport(getApplicationContext(), "31a5f1f394", false);
// 网络监听服务
startService(new Intent(this, NetworkService.class));
}

public static Context getContext() {
return context;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
//绑定控件
ButterKnife.bind(this);
//初始化沉浸式
if (isImmersionBarEnabled()) {
initImmersionBar();
}
initImmersionBar();
//初始化数据
initData();
//view与数据绑定
Expand All @@ -56,16 +54,6 @@ protected void onDestroy() {
*/
protected abstract int getLayoutId();

/**
* 是否可以使用沉浸式
* Is immersion bar enabled boolean.
*
* @return the boolean
*/
protected boolean isImmersionBarEnabled() {
return true;
}

/**
* 初始化沉浸式
* Init immersion bar.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.gyf.immersionbar.ImmersionBar;
import com.gyf.immersionbar.simple.AppManager;
import com.gyf.immersionbar.simple.R;
import com.gyf.immersionbar.simple.fragment.dialog.BottomDialogFragment;
import com.gyf.immersionbar.simple.fragment.dialog.FullDialogFragment;
Expand Down Expand Up @@ -117,6 +118,7 @@ public void onClick(View view) {
ImmersionBar.with(this, mAlertDialog)
.titleBar(toolbar)
.navigationBarColor(R.color.btn3)
.statusBarDarkFont(true)
.keyboardEnable(true)
.init();
break;
Expand Down Expand Up @@ -167,6 +169,7 @@ public void onClick(View view) {

@Override
public void onDismiss(DialogInterface dialog) {
AppManager.getInstance().hideSoftKeyBoard(this);
ImmersionBar.destroy(this, mAlertDialog);
}

Expand Down
Loading

0 comments on commit 0007cd7

Please sign in to comment.