Skip to content

Commit

Permalink
update 2.3.3-beta05
Browse files Browse the repository at this point in the history
  • Loading branch information
geyifeng committed Nov 28, 2018
1 parent 1b4ec83 commit 6c03186
Show file tree
Hide file tree
Showing 10 changed files with 147 additions and 41 deletions.
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- 2.3.1+版本 (由于之前账户密码忘记,所以只能重新更改依赖路径)
```groovy
implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta04'
implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta05'
```
- 2.3.0以下版本
```groovy
Expand All @@ -18,13 +18,20 @@

>eclipse
[immersionbar-2.3.3-beta04.aar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/immersionbar-2.3.3-beta04.aar)
[immersionbar-2.3.3-beta05.aar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/immersionbar-2.3.3-beta05.aar)

## 版本说明
### [点我查看版本说明](https://github.com/gyf-dev/ImmersionBar/wiki)

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

## 关于使用Android支持库
- 请在你的gradle.properties加入如下配置
```groovy
android.useAndroidX=true
android.enableJetifier=true
```

## 关于全面屏与刘海
### 关于全面屏
Expand Down
Binary file removed apk/immersionBar-2.3.3-beta04.apk
Binary file not shown.
Binary file added apk/immersionBar-2.3.3-beta05.apk
Binary file not shown.
2 changes: 1 addition & 1 deletion barlibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ publish {
userOrg = 'geyifeng'
groupId = 'com.gyf.immersionbar'
artifactId = 'immersionbar'
publishVersion = '2.3.3-beta04'
publishVersion = '2.3.3-beta05'
desc = 'Android bar management'
website = 'https://github.com/gyf-dev/ImmersionBar'
}
14 changes: 8 additions & 6 deletions barlibrary/src/main/java/com/gyf/barlibrary/BarConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ class BarConfig {
Resources res = activity.getResources();
mInPortrait = (res.getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT);
mSmallestWidthDp = getSmallestWidthDp(activity);
mStatusBarHeight = getInternalDimensionSize(STATUS_BAR_HEIGHT_RES_NAME);
mStatusBarHeight = getInternalDimensionSize(activity, STATUS_BAR_HEIGHT_RES_NAME);
mActionBarHeight = getActionBarHeight(activity);
mNavigationBarHeight = getNavigationBarHeight(activity);
mNavigationBarWidth = getNavigationBarWidth(activity);
Expand Down Expand Up @@ -76,7 +76,7 @@ private int getNavigationBarHeight(Context context) {
} else {
key = NAV_BAR_HEIGHT_LANDSCAPE_RES_NAME;
}
return getInternalDimensionSize(key);
return getInternalDimensionSize(context, key);
}
}
return result;
Expand All @@ -87,7 +87,7 @@ private int getNavigationBarWidth(Context context) {
int result = 0;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
if (hasNavBar((Activity) context)) {
return getInternalDimensionSize(NAV_BAR_WIDTH_RES_NAME);
return getInternalDimensionSize(context, NAV_BAR_WIDTH_RES_NAME);
}
}
return result;
Expand Down Expand Up @@ -122,12 +122,14 @@ private boolean hasNavBar(Activity activity) {
return (realWidth - displayWidth) > 0 || (realHeight - displayHeight) > 0;
}

private int getInternalDimensionSize(String key) {
private int getInternalDimensionSize(Context context, String key) {
int result = 0;
try {
int resourceId = Resources.getSystem().getIdentifier(key, "dimen", "android");
int resourceId = context.getResources().getIdentifier(key, "dimen", "android");
if (resourceId > 0) {
result = Resources.getSystem().getDimensionPixelSize(resourceId);
result = Math.round(context.getResources().getDimensionPixelSize(resourceId) *
Resources.getSystem().getDisplayMetrics().density /
context.getResources().getDisplayMetrics().density);
}
} catch (Resources.NotFoundException ignored) {
return 0;
Expand Down
48 changes: 42 additions & 6 deletions barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.gyf.barlibrary;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;

/**
Expand All @@ -10,7 +12,7 @@
* 如果不能继承,请拷贝代码到你的项目中
*
* @author geyifeng
* @date 2017/5/12
* @date 2017 /5/12
*/
public abstract class ImmersionFragment extends Fragment implements ImmersionOwner {

Expand All @@ -25,6 +27,18 @@ public void setUserVisibleHint(boolean isVisibleToUser) {
immersionProxy.setUserVisibleHint(isVisibleToUser);
}

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
immersionProxy.onCreate(savedInstanceState);
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
immersionProxy.onActivityCreated(savedInstanceState);
}

@Override
public void onResume() {
super.onResume();
Expand All @@ -43,34 +57,56 @@ public void onDestroy() {
immersionProxy.onDestroy();
}

@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
immersionProxy.onHiddenChanged(hidden);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
immersionProxy.onConfigurationChanged(newConfig);
}

/**
* 懒加载,在view初始化完成之前执行
* On lazy after view.
*/
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
immersionProxy.onHiddenChanged(hidden);
public void onLazyBeforeView() {
}

/**
* 懒加载,在view初始化完成之后执行
* On lazy before view.
*/
@Override
public void onLazyAfterView() {
}

/**
* 用户可见时候调用
* Fragment用户可见时候调用
* On visible.
*/
@Override
public void onVisible() {
}

/**
* 用户不可见时候调用
* Fragment用户不可见时候调用
* On invisible.
*/
@Override
public void onInvisible() {
}

/**
* 是否可以实现沉浸式,当为true的时候才可以执行initImmersionBar方法
* Immersion bar enabled boolean.
*
* @return the boolean
*/
@Override
public boolean immersionBarEnabled() {
return true;
Expand Down
13 changes: 13 additions & 0 deletions barlibrary/src/main/java/com/gyf/barlibrary/ImmersionOwner.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,19 @@
* @date 2018 /11/15 12:52 PM
*/
public interface ImmersionOwner {

/**
* 懒加载,在view初始化完成之前执行
* On lazy before view.
*/
void onLazyBeforeView();

/**
* 懒加载,在view初始化完成之后执行
* On lazy after view.
*/
void onLazyAfterView();

/**
* 用户可见时候调用
* On visible.
Expand Down
93 changes: 70 additions & 23 deletions barlibrary/src/main/java/com/gyf/barlibrary/ImmersionProxy.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,37 @@
package com.gyf.barlibrary;

import android.content.res.Configuration;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;

/**
* ImmersionBar代理类
* Fragment快速实现沉浸式的代理类
*
* @author geyifeng
* @date 2018/11/15 12:53 PM
*/
public class ImmersionProxy {

/**
* 是否第一次显示
* 要操作的Fragment对象
*/
private boolean mIsFirstShow;
private Fragment mFragment;
/**
* 是否显示
* 沉浸式实现接口
*/
private boolean mVisible;

private ImmersionOwner mImmersionOwner;
private Fragment mFragment;
/**
* Fragment的view是否已经初始化完成
*/
private boolean mIsActivityCreated;
/**
* 懒加载,是否已经在view初始化完成之前调用
*/
private boolean mIsLazyAfterView;
/**
* 懒加载,是否已经在view初始化完成之后调用
*/
private boolean mIsLazyBeforeView;

public ImmersionProxy(Fragment fragment) {
this.mFragment = fragment;
Expand All @@ -33,29 +43,56 @@ public ImmersionProxy(Fragment fragment) {
}

public void setUserVisibleHint(boolean isVisibleToUser) {
if (mIsFirstShow) {
if (mFragment.getUserVisibleHint()) {
mVisible = true;
mImmersionOwner.onVisible();
if (mImmersionOwner.immersionBarEnabled()) {
mImmersionOwner.initImmersionBar();
if (mFragment.getUserVisibleHint()) {
if (!mIsLazyBeforeView) {
mImmersionOwner.onLazyBeforeView();
mIsLazyBeforeView = true;
}
if (mIsActivityCreated) {
if (mFragment.getUserVisibleHint()) {
if (mImmersionOwner.immersionBarEnabled()) {
mImmersionOwner.initImmersionBar();
}
if (!mIsLazyAfterView) {
mImmersionOwner.onLazyAfterView();
mIsLazyAfterView = true;
}
mImmersionOwner.onVisible();
}
} else {
mVisible = false;
}
} else {
if (mIsActivityCreated) {
mImmersionOwner.onInvisible();
}
}
}

public void onResume() {
public void onCreate(@Nullable Bundle savedInstanceState) {
if (mFragment.getUserVisibleHint()) {
mVisible = true;
mImmersionOwner.onVisible();
if (mImmersionOwner.immersionBarEnabled() && !mIsFirstShow) {
if (!mIsLazyBeforeView) {
mImmersionOwner.onLazyBeforeView();
mIsLazyBeforeView = true;
}
}
}

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mIsActivityCreated = true;
if (mFragment.getUserVisibleHint()) {
if (mImmersionOwner.immersionBarEnabled()) {
mImmersionOwner.initImmersionBar();
}
if (!mIsLazyAfterView) {
mImmersionOwner.onLazyAfterView();
mIsLazyAfterView = true;
}
}
}

public void onResume() {
if (mFragment.getUserVisibleHint()) {
mImmersionOwner.onVisible();
}
mIsFirstShow = true;
}

public void onPause() {
Expand All @@ -71,15 +108,25 @@ public void onDestroy() {
}

public void onConfigurationChanged(Configuration newConfig) {
if (mVisible) {
mImmersionOwner.onVisible();
if (mFragment.getUserVisibleHint()) {
if (mImmersionOwner.immersionBarEnabled()) {
mImmersionOwner.initImmersionBar();
}
mImmersionOwner.onVisible();
}
}

public void onHiddenChanged(boolean hidden) {
mFragment.setUserVisibleHint(!hidden);
}

/**
* 是否已经对用户可见
* Is user visible hint boolean.
*
* @return the boolean
*/
public boolean isUserVisibleHint() {
return mFragment.getUserVisibleHint();
}
}
Binary file added jar/immersionbar-2.3.3-beta05.aar
Binary file not shown.
5 changes: 3 additions & 2 deletions sample/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ android {
minSdkVersion 18
targetSdkVersion 28
versionCode 1
versionName "2.3.3-beta04"
versionName "2.3.3-beta05"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand All @@ -31,6 +31,7 @@ android {

dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
Expand Down Expand Up @@ -65,4 +66,4 @@ dependencies {
implementation 'me.yokeyword:fragmentation:1.3.6'
//腾讯bugly
implementation 'com.tencent.bugly:crashreport:2.6.6.1'
}
}

0 comments on commit 6c03186

Please sign in to comment.