forked from gyf-dev/ImmersionBar
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
geyifeng
committed
Nov 29, 2018
1 parent
810620f
commit 5f94861
Showing
12 changed files
with
198 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
64 changes: 64 additions & 0 deletions
64
barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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; | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionOwner.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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(); | ||
} |
77 changes: 77 additions & 0 deletions
77
barlibrary/src/main/java/com/gyf/barlibrary/SimpleImmersionProxy.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters