From 79a7b8d0d5dd2ec778f38b517b64dd9649e41e3c Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Thu, 26 Jul 2018 15:26:00 +0800 Subject: [PATCH 01/11] =?UTF-8?q?fix=20#57=20setOnGuideChangedListener=20?= =?UTF-8?q?=E7=9A=84=20onRemoved=20=E8=BF=9E=E7=BB=AD=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E4=BA=86=E4=B8=A4=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../com/app/hubert/newbieguide/AbcFragment.java | 14 ++++++++++++++ .../java/com/app/hubert/guide/core/Controller.java | 6 +++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 7c436d5..835181b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,7 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) implementation project(':guide') -// implementation ('com.github.huburt-Hu:NewbieGuide:v2.3.0') +// implementation ('com.github.huburt-Hu:NewbieGuide:v2.4.0') implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion" implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion" diff --git a/app/src/main/java/com/app/hubert/newbieguide/AbcFragment.java b/app/src/main/java/com/app/hubert/newbieguide/AbcFragment.java index fad61ea..225d87e 100644 --- a/app/src/main/java/com/app/hubert/newbieguide/AbcFragment.java +++ b/app/src/main/java/com/app/hubert/newbieguide/AbcFragment.java @@ -3,11 +3,14 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; +import com.app.hubert.guide.core.Controller; +import com.app.hubert.guide.listener.OnGuideChangedListener; import com.app.hubert.guide.model.GuidePage; import com.app.hubert.guide.model.HighLight; import com.app.hubert.guide.NewbieGuide; @@ -53,6 +56,17 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { NewbieGuide.with(this)//传入fragment .setLabel("guide2")//设置引导层标示,必传!否则报错 .alwaysShow(true) + .setOnGuideChangedListener(new OnGuideChangedListener() { + @Override + public void onShowed(Controller controller) { + + } + + @Override + public void onRemoved(Controller controller) { + Log.e("tag", "onRemoved"); + } + }) .addGuidePage(GuidePage.newInstance() .addHighLight(textView, HighLight.Shape.CIRCLE)//添加需要高亮的view .setLayoutRes(R.layout.view_guide)//自定义的提示layout,不要添加背景色,引导层背景色通过setBackgroundColor()设置 diff --git a/guide/src/main/java/com/app/hubert/guide/core/Controller.java b/guide/src/main/java/com/app/hubert/guide/core/Controller.java index a5e8c40..7480944 100644 --- a/guide/src/main/java/com/app/hubert/guide/core/Controller.java +++ b/guide/src/main/java/com/app/hubert/guide/core/Controller.java @@ -219,9 +219,9 @@ public void remove() { } } } - } - if (onGuideChangedListener != null) { - onGuideChangedListener.onRemoved(this); + if (onGuideChangedListener != null) { + onGuideChangedListener.onRemoved(this); + } } } From f70b67e9f86490e321e5d8e8fc256790d45f790e Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Tue, 7 Aug 2018 10:16:47 +0800 Subject: [PATCH 02/11] fix #59 GuideLayout.setOnGuideLayoutDismissListener() on a null object reference --- .../com/app/hubert/guide/core/Controller.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/guide/src/main/java/com/app/hubert/guide/core/Controller.java b/guide/src/main/java/com/app/hubert/guide/core/Controller.java index 7480944..ae9a7d7 100644 --- a/guide/src/main/java/com/app/hubert/guide/core/Controller.java +++ b/guide/src/main/java/com/app/hubert/guide/core/Controller.java @@ -134,14 +134,18 @@ public void showPage(int position) { return; } current = position; - currentLayout.setOnGuideLayoutDismissListener(new GuideLayout.OnGuideLayoutDismissListener() { - @Override - public void onGuideLayoutDismiss(GuideLayout guideLayout) { - showGuidePage(); - } - }); - currentLayout.remove(); - + //fix #59 GuideLayout.setOnGuideLayoutDismissListener() on a null object reference + if (currentLayout != null) { + currentLayout.setOnGuideLayoutDismissListener(new GuideLayout.OnGuideLayoutDismissListener() { + @Override + public void onGuideLayoutDismiss(GuideLayout guideLayout) { + showGuidePage(); + } + }); + currentLayout.remove(); + } else { + showGuidePage(); + } } /** @@ -222,6 +226,7 @@ public void remove() { if (onGuideChangedListener != null) { onGuideChangedListener.onRemoved(this); } + currentLayout = null; } } From bbe14c9720d38b10826314f48328200efd4676c5 Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Tue, 7 Aug 2018 10:24:43 +0800 Subject: [PATCH 03/11] update library --- app/build.gradle | 4 ++-- build.gradle | 4 ++-- guide/build.gradle | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 835181b..3a02fda 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 26 - buildToolsVersion '27.0.3' + compileSdkVersion rootProject.ext.compileSdkVersion + buildToolsVersion rootProject.ext.buildToolsVersion defaultConfig { applicationId "com.app.hubert.newbieguide" diff --git a/build.gradle b/build.gradle index 4c8b8ce..2237f3d 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ task clean(type: Delete) { } ext{ - supportLibraryVersion = "26.1.0" + supportLibraryVersion = "27.0.0" compileSdkVersion = 26 - buildToolsVersion = '26.0.2' + buildToolsVersion = '27.0.3' } \ No newline at end of file diff --git a/guide/build.gradle b/guide/build.gradle index fe1d1af..fb35b51 100644 --- a/guide/build.gradle +++ b/guide/build.gradle @@ -4,7 +4,7 @@ apply plugin: 'com.github.dcendents.android-maven' group = 'com.github.huburt-Hu' android { - compileSdkVersion 26 + compileSdkVersion rootProject.ext.compileSdkVersion defaultConfig { minSdkVersion 14 From 239dd7b22e9c938ade472c372c7a76e9821be67f Mon Sep 17 00:00:00 2001 From: tuzhao Date: Thu, 9 Aug 2018 11:10:56 +0800 Subject: [PATCH 04/11] remove needn't git track file --- .idea/compiler.xml | 22 ---------- .idea/copyright/profiles_settings.xml | 3 -- .idea/misc.xml | 60 --------------------------- .idea/modules.xml | 10 ----- .idea/runConfigurations.xml | 12 ------ .idea/vcs.xml | 6 --- 6 files changed, 113 deletions(-) delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/copyright/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/runConfigurations.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 96cc43e..0000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf3..0000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 7021716..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - 1.8 - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 925cf0e..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml deleted file mode 100644 index 7f68460..0000000 --- a/.idea/runConfigurations.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 1acb465828e3f22b7e2efb8a3b2ad7c14a9926d8 Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Tue, 18 Sep 2018 08:47:48 +0800 Subject: [PATCH 05/11] fix #72 --- app/build.gradle | 2 +- .../com/app/hubert/guide/lifecycle/ListenerFragment.java | 8 ++++---- .../app/hubert/guide/lifecycle/V4ListenerFragment.java | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3a02fda..3de620c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,7 +27,7 @@ dependencies { exclude group: 'com.android.support', module: 'support-annotations' }) implementation project(':guide') -// implementation ('com.github.huburt-Hu:NewbieGuide:v2.4.0') +// implementation ('com.github.huburt-Hu:NewbieGuide:v2.4.2') implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibraryVersion" implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportLibraryVersion" diff --git a/guide/src/main/java/com/app/hubert/guide/lifecycle/ListenerFragment.java b/guide/src/main/java/com/app/hubert/guide/lifecycle/ListenerFragment.java index bc59578..923d6ec 100644 --- a/guide/src/main/java/com/app/hubert/guide/lifecycle/ListenerFragment.java +++ b/guide/src/main/java/com/app/hubert/guide/lifecycle/ListenerFragment.java @@ -16,25 +16,25 @@ public void setFragmentLifecycle(FragmentLifecycle lifecycle) { public void onStart() { super.onStart(); LogUtil.d("onStart: "); - mFragmentLifecycle.onStart(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onStart(); } @Override public void onStop() { super.onStop(); - mFragmentLifecycle.onStop(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onStop(); } @Override public void onDestroyView() { super.onDestroyView(); - mFragmentLifecycle.onDestroyView(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onDestroyView(); } @Override public void onDestroy() { super.onDestroy(); LogUtil.d("onDestroy: "); - mFragmentLifecycle.onDestroy(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onDestroy(); } } diff --git a/guide/src/main/java/com/app/hubert/guide/lifecycle/V4ListenerFragment.java b/guide/src/main/java/com/app/hubert/guide/lifecycle/V4ListenerFragment.java index 9914584..37e3e25 100644 --- a/guide/src/main/java/com/app/hubert/guide/lifecycle/V4ListenerFragment.java +++ b/guide/src/main/java/com/app/hubert/guide/lifecycle/V4ListenerFragment.java @@ -22,25 +22,25 @@ public void setFragmentLifecycle(FragmentLifecycle lifecycle) { public void onStart() { super.onStart(); LogUtil.d("onStart: "); - mFragmentLifecycle.onStart(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onStart(); } @Override public void onStop() { super.onStop(); - mFragmentLifecycle.onStop(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onStop(); } @Override public void onDestroyView() { super.onDestroyView(); - mFragmentLifecycle.onDestroyView(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onDestroyView(); } @Override public void onDestroy() { super.onDestroy(); LogUtil.d("onDestroy: "); - mFragmentLifecycle.onDestroy(); + if (mFragmentLifecycle != null) mFragmentLifecycle.onDestroy(); } } From 5e3dc2a01939d4300cb15b806ab4312bd1a11d15 Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Tue, 11 Dec 2018 10:22:58 +0800 Subject: [PATCH 06/11] =?UTF-8?q?RelativeGuide.onLayoutInflated=E6=96=B9?= =?UTF-8?q?=E6=B3=95=E6=B7=BB=E5=8A=A0Controller=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/hubert/newbieguide/FirstActivity.java | 8 +++++--- .../com/app/hubert/guide/core/GuideLayout.java | 4 ++-- .../app/hubert/guide/model/RelativeGuide.java | 16 +++++++++++++++- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java b/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java index 60ef150..d705d59 100644 --- a/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java +++ b/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java @@ -34,6 +34,7 @@ public class FirstActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first); + //简单使用 final Button btnSimple = (Button) findViewById(R.id.btn_simple); btnSimple.setOnClickListener(new View.OnClickListener() { @Override @@ -49,6 +50,7 @@ public void onClick(View v) { .show(); } }); + //对话框形式 final Button btnDialog = (Button) findViewById(R.id.btn_dialog); btnDialog.setOnClickListener(new View.OnClickListener() { @Override @@ -71,7 +73,7 @@ public void onLayoutInflated(View view, Controller controller) { .show(); } }); - + //设置anchor 及 自定义绘制图形 final View anchorView = findViewById(R.id.ll_anchor); final Button btnAnchor = (Button) findViewById(R.id.btn_anchor); btnAnchor.setOnClickListener(new View.OnClickListener() { @@ -100,7 +102,7 @@ public void onHighlightDrew(Canvas canvas, RectF rectF) { .show(); } }); - + //监听 final Button btnListener = findViewById(R.id.btn_listener); btnListener.setOnClickListener(new View.OnClickListener() { @Override @@ -146,7 +148,7 @@ public void onClick(View v) { HighlightOptions options = new HighlightOptions.Builder() .setRelativeGuide(new RelativeGuide(R.layout.view_relative_guide, Gravity.LEFT, 100) { @Override - protected void onLayoutInflated(View view) { + protected void onLayoutInflated(View view, Controller controller) { TextView textView = view.findViewById(R.id.tv); textView.setText("inflated"); } diff --git a/guide/src/main/java/com/app/hubert/guide/core/GuideLayout.java b/guide/src/main/java/com/app/hubert/guide/core/GuideLayout.java index 2c2fea0..01dcb4f 100644 --- a/guide/src/main/java/com/app/hubert/guide/core/GuideLayout.java +++ b/guide/src/main/java/com/app/hubert/guide/core/GuideLayout.java @@ -131,7 +131,7 @@ public boolean onTouchEvent(MotionEvent event) { private void notifyClickListener(HighLight highLight) { HighlightOptions options = highLight.getOptions(); if (options != null) { - if (options.onClickListener!=null) { + if (options.onClickListener != null) { options.onClickListener.onClick(this); } } @@ -224,7 +224,7 @@ public void onClick(View v) { List relativeGuides = guidePage.getRelativeGuides(); if (relativeGuides.size() > 0) { for (RelativeGuide relativeGuide : relativeGuides) { - addView(relativeGuide.getGuideLayout((ViewGroup) getParent())); + addView(relativeGuide.getGuideLayout((ViewGroup) getParent(), controller)); } } } diff --git a/guide/src/main/java/com/app/hubert/guide/model/RelativeGuide.java b/guide/src/main/java/com/app/hubert/guide/model/RelativeGuide.java index e8000b9..f3b8456 100644 --- a/guide/src/main/java/com/app/hubert/guide/model/RelativeGuide.java +++ b/guide/src/main/java/com/app/hubert/guide/model/RelativeGuide.java @@ -9,6 +9,7 @@ import android.view.ViewGroup; import android.widget.FrameLayout; +import com.app.hubert.guide.core.Controller; import com.app.hubert.guide.util.LogUtil; import java.lang.annotation.Retention; @@ -67,9 +68,10 @@ public RelativeGuide(@LayoutRes int layout, @LimitGravity int gravity, int paddi this.padding = padding; } - public final View getGuideLayout(ViewGroup viewGroup) { + public final View getGuideLayout(ViewGroup viewGroup, Controller controller) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(layout, viewGroup, false); onLayoutInflated(view); + onLayoutInflated(view, controller); FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) view.getLayoutParams(); MarginInfo marginInfo = getMarginInfo(gravity, viewGroup, view); LogUtil.e(marginInfo.toString()); @@ -117,8 +119,20 @@ protected void offsetMargin(MarginInfo marginInfo, ViewGroup viewGroup, View vie * 复写初始化布局 * * @param view inflated from layout + * @see RelativeGuide#onLayoutInflated(View view, Controller controller) */ + @Deprecated protected void onLayoutInflated(View view) { //do nothing } + + /** + * 复写初始化布局 + * + * @param view inflated from layout + * @param controller controller + */ + protected void onLayoutInflated(View view, Controller controller) { + //do nothing + } } From 8e1fb987db306ce032f5ff7e7d0d025692e83822 Mon Sep 17 00:00:00 2001 From: saber <654360340@qq.com> Date: Tue, 11 Dec 2018 13:45:54 +0800 Subject: [PATCH 07/11] =?UTF-8?q?fix=20#87=20ScrollView=E4=B8=AD=E9=AB=98?= =?UTF-8?q?=E4=BA=AE=E7=9A=84=E4=BD=8D=E7=BD=AE=E5=88=A4=E6=96=AD=E6=9C=89?= =?UTF-8?q?=E5=81=8F=E5=B7=AE=20fix=20=E5=A4=9A=E6=AC=A1=E8=B0=83=E7=94=A8?= =?UTF-8?q?show=E9=87=8D=E5=A4=8D=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 2 + .../app/hubert/newbieguide/FirstActivity.java | 6 ++ .../newbieguide/ObservableScrollView.java | 38 ++++++++ .../newbieguide/ScrollViewActivity.java | 54 +++++++++++ app/src/main/res/layout/activity_first.xml | 6 ++ .../main/res/layout/activity_scroll_view.xml | 95 +++++++++++++++++++ .../com/app/hubert/guide/core/Controller.java | 12 +++ .../com/app/hubert/guide/util/ViewUtils.java | 17 ++++ 8 files changed, 230 insertions(+) create mode 100644 app/src/main/java/com/app/hubert/newbieguide/ObservableScrollView.java create mode 100644 app/src/main/java/com/app/hubert/newbieguide/ScrollViewActivity.java create mode 100644 app/src/main/res/layout/activity_scroll_view.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index db0b6fe..27123f1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,8 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java b/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java index d705d59..e56e9f1 100644 --- a/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java +++ b/app/src/main/java/com/app/hubert/newbieguide/FirstActivity.java @@ -140,6 +140,12 @@ public void onClick(View v) { RecyclerViewActivity.start(FirstActivity.this); } }); + findViewById(R.id.btn_scroll).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + ScrollViewActivity.start(FirstActivity.this); + } + }); final View btnRelative = findViewById(R.id.btn_relative); btnRelative.setOnClickListener(new View.OnClickListener() { diff --git a/app/src/main/java/com/app/hubert/newbieguide/ObservableScrollView.java b/app/src/main/java/com/app/hubert/newbieguide/ObservableScrollView.java new file mode 100644 index 0000000..fce9297 --- /dev/null +++ b/app/src/main/java/com/app/hubert/newbieguide/ObservableScrollView.java @@ -0,0 +1,38 @@ +package com.app.hubert.newbieguide; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.ScrollView; + +public class ObservableScrollView extends ScrollView { + + private OnScrollChangeListener scrollChangeListener = null; + + public ObservableScrollView(Context context) { + super(context); + } + + public ObservableScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public void setScrollViewListener(OnScrollChangeListener onScrollChangeListener) { + this.scrollChangeListener = onScrollChangeListener; + } + + @Override + protected void onScrollChanged(int x, int y, int oldx, int oldy) { + super.onScrollChanged(x, y, oldx, oldy); + if (scrollChangeListener != null) { + scrollChangeListener.onScrollChanged(this, x, y, oldx, oldy); + } + } + + public interface OnScrollChangeListener { + void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy); + } +} diff --git a/app/src/main/java/com/app/hubert/newbieguide/ScrollViewActivity.java b/app/src/main/java/com/app/hubert/newbieguide/ScrollViewActivity.java new file mode 100644 index 0000000..a421c97 --- /dev/null +++ b/app/src/main/java/com/app/hubert/newbieguide/ScrollViewActivity.java @@ -0,0 +1,54 @@ +package com.app.hubert.newbieguide; + +import android.content.Context; +import android.content.Intent; +import android.graphics.Rect; +import android.graphics.RectF; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.ScrollView; + +import com.app.hubert.guide.NewbieGuide; +import com.app.hubert.guide.core.Controller; +import com.app.hubert.guide.model.GuidePage; +import com.app.hubert.guide.util.LogUtil; + +/** + * Created by hubert on 2018/12/11. + */ +public class ScrollViewActivity extends AppCompatActivity { + + private Controller controller; + + public static void start(Context context) { + Intent starter = new Intent(context, ScrollViewActivity.class); + context.startActivity(starter); + } + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_scroll_view); + final View light = findViewById(R.id.v_light); + controller = NewbieGuide.with(ScrollViewActivity.this) + .setLabel("scroll1") + .alwaysShow(true) + .addGuidePage(GuidePage.newInstance() + .addHighLight(light)) + .build(); + ObservableScrollView scrollView = findViewById(R.id.scrollView); + scrollView.setScrollViewListener(new ObservableScrollView.OnScrollChangeListener() { + @Override + public void onScrollChanged(ObservableScrollView scrollView, int x, int y, int oldx, int oldy) { + if (scrollView.getScrollY() + scrollView.getHeight() - + scrollView.getPaddingTop() - scrollView.getPaddingBottom() + == scrollView.getChildAt(0).getHeight()) {//判断滑动到底部 + LogUtil.i("call show"); + controller.show(); + } + } + }); + } +} diff --git a/app/src/main/res/layout/activity_first.xml b/app/src/main/res/layout/activity_first.xml index a821a6e..4a50187 100644 --- a/app/src/main/res/layout/activity_first.xml +++ b/app/src/main/res/layout/activity_first.xml @@ -56,6 +56,12 @@ android:layout_height="wrap_content" android:text="列表" /> +