|
|
@@ -43,6 +43,7 @@ public class ActionBarManager implements IActionBarListener {
|
|
|
private ProgressBar progressBar;
|
|
|
|
|
|
private IActionBarListener listener;
|
|
|
+ private IActionBarListener.Scroll scrollListener;
|
|
|
|
|
|
private ActionBarManager() {
|
|
|
}
|
|
|
@@ -56,6 +57,31 @@ public class ActionBarManager implements IActionBarListener {
|
|
|
this.listener = listener;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 스크롤 이벤트 listener register
|
|
|
+ *
|
|
|
+ * @param scrollListener
|
|
|
+ */
|
|
|
+ public void setScrollListener(IActionBarListener.Scroll scrollListener) {
|
|
|
+ this.scrollListener = scrollListener;
|
|
|
+ if (null == scrollListener) {
|
|
|
+ this.appBarLayout.removeOnOffsetChangedListener(onOffsetChangedListener);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.appBarLayout.addOnOffsetChangedListener(onOffsetChangedListener);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private AppBarLayout.OnOffsetChangedListener onOffsetChangedListener = new AppBarLayout.OnOffsetChangedListener() {
|
|
|
+ @Override
|
|
|
+ public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
|
|
|
+// Log.i("APP# ActionBarManager | onOffsetChanged", "|" + "verticalOffset: " + verticalOffset);
|
|
|
+ if (null != scrollListener) {
|
|
|
+ scrollListener.onScroll(appBarLayout, verticalOffset);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
/**
|
|
|
* actionBar 정보 받아옴.
|
|
|
*
|
|
|
@@ -93,11 +119,12 @@ public class ActionBarManager implements IActionBarListener {
|
|
|
public void setScrollable(boolean isEnabled) {
|
|
|
AppBarLayout.LayoutParams params = (AppBarLayout.LayoutParams) toolbar.getLayoutParams();
|
|
|
CoordinatorLayout.LayoutParams appBarLayoutParams = (CoordinatorLayout.LayoutParams) appBarLayout.getLayoutParams();
|
|
|
- if(isEnabled) {
|
|
|
+ if (isEnabled) {
|
|
|
params.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL);
|
|
|
appBarLayoutParams.setBehavior(new AppBarLayout.Behavior());
|
|
|
appBarLayout.setLayoutParams(appBarLayoutParams);
|
|
|
- } else {
|
|
|
+ }
|
|
|
+ else {
|
|
|
params.setScrollFlags(0);
|
|
|
appBarLayoutParams.setBehavior(null);
|
|
|
appBarLayout.setLayoutParams(appBarLayoutParams);
|
|
|
@@ -288,20 +315,19 @@ public class ActionBarManager implements IActionBarListener {
|
|
|
/***********************************
|
|
|
* life-cycle
|
|
|
***********************************/
|
|
|
- // public void init() {
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// public void start() {
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// public void stop() {
|
|
|
-//
|
|
|
-// }
|
|
|
-//
|
|
|
-// public void dispose() {
|
|
|
-//
|
|
|
-// }
|
|
|
+
|
|
|
+ public void dispose() {
|
|
|
+ if (null != appBarLayout) {
|
|
|
+ appBarLayout = null;
|
|
|
+ if (null != scrollListener) {
|
|
|
+ appBarLayout.addOnOffsetChangedListener(onOffsetChangedListener);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ scrollListener = null;
|
|
|
+
|
|
|
+ listener = null;
|
|
|
+ actionBar = null;
|
|
|
+ }
|
|
|
|
|
|
}
|