Skip to content

Commit

Permalink
update 2.3.3-beta06
Browse files Browse the repository at this point in the history
  • Loading branch information
geyifeng committed Nov 29, 2018
1 parent 810620f commit 5f94861
Show file tree
Hide file tree
Showing 12 changed files with 198 additions and 20 deletions.
24 changes: 18 additions & 6 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-beta05'
implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta06'
```
- 2.3.0以下版本
```groovy
Expand All @@ -18,16 +18,16 @@

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

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

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

## 关于使用AndroidX支持库
- 请在你的gradle.properties加入如下配置
- 如果你的项目中使用了AndroidX支持库,请在你的gradle.properties加入如下配置,如果已经配置了,请忽略
```groovy
android.useAndroidX=true
android.enableJetifier=true
Expand Down Expand Up @@ -158,8 +158,20 @@
## 在Fragment中实现沉浸式

#### 在Fragment使用ImmersionBar
- 第一种,你的Fragment直接继承[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)类,在initImmersionBar方法中实现沉浸式代码,只有当immersionBarEnabled放回为true才可以走initImmersionBar方法哦,不过immersionBarEnabled默认返回已经为true了,如果当前Fragment不想走沉浸式方法,请将immersionBarEnabled设置为false
- 第二种,如果你的Fragment不能继承[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)类,请参考[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)实现[ImmersionOwner](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionOwner.java)接口
- 第一种,你的Fragment直接继承[SimpleImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionFragment.java)或者[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)类,在initImmersionBar方法中实现沉浸式代码,只有当immersionBarEnabled放回为true才可以走initImmersionBar方法哦,不过immersionBarEnabled默认返回已经为true了,如果当前Fragment不想走沉浸式方法,请将immersionBarEnabled设置为false
- 第二种,如果你的Fragment不能继承[SimpleImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionFragment.java)或者[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)类,请参考[SimpleImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionFragment.java)实现[SimpleImmersionOwner](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionOwner.java)接口,或者参考[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)实现[ImmersionOwner](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionOwner.java)接口

> [SimpleImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionFragment.java)和[ImmersionFragment](https://github.com/gyf-dev/ImmersionBar/blob/master/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionFragment.java)区别是什么?

| 方法名字 | SimpleImmersionFragment | ImmersionFragment |
| ------ | ------ | ------ |
| initImmersionBar()沉浸式代码写着这里 | ✅ | ✅ |
| immersionBarEnabled()当前Fragment是否可以走initImmersionBar方法 | ✅ | ✅ |
| onLazyBeforeView()懒加载,在view初始化之前调用 | ❌ | ✅ |
| onLazyAfterView()懒加载,在view初始化之后调用 | ❌ | ✅ |
| onVisible()当前Fragment对用户可见的时候调用 | ❌ | ✅ |
| onInvisible()当前Fragment不可见的时候调用 | ❌ | ✅ |

#### 在Activity使用ImmersionBar
- 第一种,当结合viewpager使用的时候,请使用viewpager的addOnPageChangeListener的方法监听沉浸式,参考demo中[FragmentThreeActivity](https://github.com/gyf-dev/ImmersionBar/blob/master/sample/src/main/java/com/gyf/immersionbar/activity/FragmentThreeActivity.java)这个类
- 第二种,当使用show()和hide()来控制Fragment显示隐藏的时候,请在tab切换的时候使用ImmersionBar,参考demo中[FragmentFourActivity](https://github.com/gyf-dev/ImmersionBar/blob/master/sample/src/main/java/com/gyf/immersionbar/activity/FragmentFourActivity.java)这个类
Expand Down
Binary file removed apk/immersionBar-2.3.3-beta05.apk
Binary file not shown.
Binary file added apk/immersionBar-2.3.3-beta06.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-beta05'
publishVersion = '2.3.3-beta06'
desc = 'Android bar management'
website = 'https://github.com/gyf-dev/ImmersionBar'
}
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ public void onGlobalLayout() {
if (!ImmersionBar.checkFitsSystemWindows(mWindow.getDecorView().findViewById(android.R.id.content))) {
if (mChildView != null) {
if (mImmersionBar.getBarParams().isSupportActionBar) {
keyboardHeight += mActionBarHeight;
keyboardHeight += mActionBarHeight + mStatusBarHeight;
}
if (mImmersionBar.getBarParams().fits) {
keyboardHeight += mStatusBarHeight;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,54 +19,54 @@ public abstract class ImmersionFragment extends Fragment implements ImmersionOwn
/**
* ImmersionBar代理类
*/
private ImmersionProxy immersionProxy = new ImmersionProxy(this);
private ImmersionProxy mImmersionProxy = new ImmersionProxy(this);

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
immersionProxy.setUserVisibleHint(isVisibleToUser);
mImmersionProxy.setUserVisibleHint(isVisibleToUser);
}

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

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

@Override
public void onResume() {
super.onResume();
immersionProxy.onResume();
mImmersionProxy.onResume();
}

@Override
public void onPause() {
super.onPause();
immersionProxy.onPause();
mImmersionProxy.onPause();
}

@Override
public void onDestroy() {
super.onDestroy();
immersionProxy.onDestroy();
mImmersionProxy.onDestroy();
}

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

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

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.gyf.barlibrary;

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

/**
* 为了方便在Fragment使用沉浸式请继承ImmersionFragment,
* 请在immersionBarEnabled方法中实现你的沉浸式代码,
* ImmersionProxy已经做了ImmersionBar.with(mFragment).destroy()了,所以不需要在你的代码中做这个处理了
* 如果不能继承,请拷贝代码到你的项目中
*
* @author geyifeng
* @date 2017 /5/12
*/
public abstract class SimpleImmersionFragment extends Fragment implements SimpleImmersionOwner {

/**
* ImmersionBar代理类
*/
private SimpleImmersionProxy mSimpleImmersionProxy = new SimpleImmersionProxy(this);

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
mSimpleImmersionProxy.setUserVisibleHint(isVisibleToUser);
}

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

@Override
public void onDestroy() {
super.onDestroy();
mSimpleImmersionProxy.onDestroy();
}

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

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

/**
* 是否可以实现沉浸式,当为true的时候才可以执行initImmersionBar方法
* Immersion bar enabled boolean.
*
* @return the boolean
*/
@Override
public boolean immersionBarEnabled() {
return true;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.gyf.barlibrary;

/**
* ImmersionBar接口
* The interface Immersion owner.
*
* @author geyifeng
* @date 2018 /11/15 12:52 PM
*/
public interface SimpleImmersionOwner {

/**
* 初始化沉浸式代码
* Init immersion bar.
*/
void initImmersionBar();

/**
* 是否可以实现沉浸式,当为true的时候才可以执行initImmersionBar方法
* Immersion bar enabled boolean.
*
* @return the boolean
*/
boolean immersionBarEnabled();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package com.gyf.barlibrary;

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

/**
* Fragment快速实现沉浸式的代理类
*
* @author geyifeng
* @date 2018/11/15 12:53 PM
*/
public class SimpleImmersionProxy {
/**
* 要操作的Fragment对象
*/
private Fragment mFragment;
/**
* 沉浸式实现接口
*/
private SimpleImmersionOwner mSimpleImmersionOwner;
/**
* Fragment的view是否已经初始化完成
*/
private boolean mIsActivityCreated;

public SimpleImmersionProxy(Fragment fragment) {
this.mFragment = fragment;
if (fragment instanceof SimpleImmersionOwner) {
this.mSimpleImmersionOwner = (SimpleImmersionOwner) fragment;
} else {
throw new IllegalArgumentException("Fragment请实现SimpleImmersionOwner接口");
}
}

public void setUserVisibleHint(boolean isVisibleToUser) {
setImmersionBar();
}

public void onActivityCreated(@Nullable Bundle savedInstanceState) {
mIsActivityCreated = true;
setImmersionBar();
}

public void onDestroy() {
if (mSimpleImmersionOwner.immersionBarEnabled() && mFragment != null && mFragment.getActivity() != null) {
ImmersionBar.with(mFragment).destroy();
}
mFragment = null;
mSimpleImmersionOwner = null;
}

public void onConfigurationChanged(Configuration newConfig) {
setImmersionBar();
}

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

/**
* 是否已经对用户可见
* Is user visible hint boolean.
*
* @return the boolean
*/
public boolean isUserVisibleHint() {
return mFragment.getUserVisibleHint();
}

private void setImmersionBar() {
if (mIsActivityCreated && mFragment.getUserVisibleHint() && mSimpleImmersionOwner.immersionBarEnabled()) {
mSimpleImmersionOwner.initImmersionBar();
}
}
}
Binary file added jar/immersionbar-2.3.3-beta06.aar
Binary file not shown.
2 changes: 1 addition & 1 deletion 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-beta05"
versionName "2.3.3-beta06"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import android.view.ViewGroup;

import com.gyf.barlibrary.ImmersionBar;
import com.gyf.barlibrary.ImmersionFragment;
import com.gyf.barlibrary.SimpleImmersionFragment;
import com.gyf.immersionbar.R;

import butterknife.BindView;
Expand All @@ -24,7 +24,7 @@
* @author geyifeng
* @date 2017/4/7
*/
public abstract class BaseFragment extends ImmersionFragment {
public abstract class BaseFragment extends SimpleImmersionFragment {

@BindView(R.id.toolbar)
Toolbar toolbar;
Expand Down

0 comments on commit 5f94861

Please sign in to comment.