From 8d6961eedc4c749becf624aca4680defe9e043e0 Mon Sep 17 00:00:00 2001 From: gyf Date: Tue, 21 Aug 2018 15:57:48 +0800 Subject: [PATCH] update 2.3.1 --- README.md | 21 +++- barlibrary/build.gradle | 28 ++--- .../java/com/gyf/barlibrary/ImmersionBar.java | 119 ++++++++++++------ build.gradle | 3 +- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- jar/immersionbar-2.3.1.jar | Bin 0 -> 34810 bytes sample/build.gradle | 44 +++---- .../main/java/com/gyf/immersionbar/MyApp.java | 8 +- .../immersionbar/activity/BlogActivity.java | 2 +- .../immersionbar/activity/DialogActivity.java | 11 +- .../fragment/dialog/BaseDialogFragment.java | 2 +- .../fragment/one/HomeOneFragment.java | 12 ++ sample/src/main/res/layout/drawer_left.xml | 2 +- sample/src/main/res/layout/title_bar_one.xml | 5 +- sample/src/main/res/values/colors.xml | 2 +- 16 files changed, 165 insertions(+), 98 deletions(-) create mode 100644 jar/immersionbar-2.3.1.jar diff --git a/README.md b/README.md index 0dcdfa6..62481b6 100644 --- a/README.md +++ b/README.md @@ -8,18 +8,33 @@ > android studio ```groovy - compile 'com.gyf.barlibrary:barlibrary:2.3.0' + implementation 'com.gyf.immersionbar:immersionbar:2.3.1' ``` >eclipse -[barlibrary-2.3.0.jar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/barlibrary-2.3.0.jar) +[immersionbar-2.3.1.jar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/immersionbar-2.3.1.jar) ## 版本说明 ### [点我](https://github.com/gyf-dev/ImmersionBar/wiki) ## 下载demo -### [下载](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-2.3.0.apk) +### [下载](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-2.3.1.apk) + +## 关于全面屏与刘海 +- 解决全面屏上下部分留黑或留白问题,以下三种任选其一,或者都写 + + ① 在manifest的Application节点中加入 + ```xml + + ``` + ② 在manifest的Application节点下加入如下属性,这句话的意思是支持分屏模式 + ```xml + android:resizeableActivity="true" + ``` + ③ 升级targetSdkVersion为25以上版本 ## 用法 ### 初始化 diff --git a/barlibrary/build.gradle b/barlibrary/build.gradle index 3af78c2..80b290c 100644 --- a/barlibrary/build.gradle +++ b/barlibrary/build.gradle @@ -2,12 +2,12 @@ apply plugin: 'com.android.library' apply plugin: 'com.novoda.bintray-release' android { - compileSdkVersion 25 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { minSdkVersion 11 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 1 versionName "1.0" @@ -29,29 +29,29 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + implementation fileTree(include: ['*.jar'], dir: 'libs') + androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.3.1' - testCompile 'junit:junit:4.12' + implementation 'com.android.support:appcompat-v7:27.1.1' + testImplementation 'junit:junit:4.12' } task makeJar(type: Copy) { - delete 'build/libs/barlibrary-2.2.9.jar' - from('build/intermediates/bundles/default/') + delete 'build/libs/immersionbar-2.3.0.jar' + from('build/intermediates/bundles/release/') into('build/libs/') include('classes.jar') - rename('classes.jar', 'barlibrary-2.3.0.jar') + rename('classes.jar', 'immersionbar-2.3.1.jar') } makeJar.dependsOn(build) publish { - userOrg = 'magic-dev' - groupId = 'com.gyf.barlibrary' - artifactId = 'barlibrary' - publishVersion = '2.3.0' + userOrg = 'geyifeng' + groupId = 'com.gyf.immersionbar' + artifactId = 'immersionbar' + publishVersion = '2.3.1' desc = 'Android bar management' website = 'https://github.com/gyf-dev/ImmersionBar' } diff --git a/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionBar.java b/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionBar.java index 82a14c7..5b0b6e5 100644 --- a/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionBar.java +++ b/barlibrary/src/main/java/com/gyf/barlibrary/ImmersionBar.java @@ -19,6 +19,7 @@ import android.support.v4.content.ContextCompat; import android.support.v4.graphics.ColorUtils; import android.support.v4.widget.DrawerLayout; +import android.util.Log; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -27,7 +28,6 @@ import android.view.WindowManager; import android.widget.FrameLayout; -import java.lang.ref.WeakReference; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; @@ -68,10 +68,9 @@ public class ImmersionBar { * @param activity the activity */ private ImmersionBar(Activity activity) { - WeakReference activityWeakReference = new WeakReference<>(activity); - mActivity = activityWeakReference.get(); + mActivity = activity; mWindow = mActivity.getWindow(); - mActivityName = activity.getClass().getName(); + mActivityName = activity.toString(); mImmersionBarName = mActivityName; initParams(); } @@ -90,24 +89,45 @@ private ImmersionBar(Activity activity, Fragment fragment) { if (activity == null) { throw new IllegalArgumentException("Activity不能为空!!!"); } - WeakReference activityWeakReference = new WeakReference<>(activity); - WeakReference fragmentWeakReference = new WeakReference<>(fragment); - mActivity = activityWeakReference.get(); + mActivity = activity; mWindow = mActivity.getWindow(); - mActivityName = mActivity.getClass().getName(); - mFragmentName = mActivityName + "_AND_" + fragmentWeakReference.get().getClass().getName(); + mActivityName = mActivity.toString(); + mFragmentName = mActivityName + "_AND_" + fragment.toString(); mImmersionBarName = mFragmentName; initParams(); } + private ImmersionBar(DialogFragment dialogFragment) { + mActivity = dialogFragment.getActivity(); + mDialog = dialogFragment.getDialog(); + mWindow = mDialog.getWindow(); + mActivityName = mActivity.toString(); + mImmersionBarName = mActivityName + "_AND_" + dialogFragment.toString(); + initParams(); + } + private ImmersionBar(DialogFragment dialogFragment, Dialog dialog) { - WeakReference dialogFragmentWeakReference = new WeakReference<>(dialogFragment); - WeakReference dialogWeakReference = new WeakReference<>(dialog); - mActivity = dialogFragmentWeakReference.get().getActivity(); - mDialog = dialogWeakReference.get(); + mActivity = dialogFragment.getActivity(); + mDialog = dialog; mWindow = mDialog.getWindow(); - mActivityName = mActivity.getClass().getName(); - mImmersionBarName = mActivityName + "_AND_" + dialogFragmentWeakReference.get().getClass().getName(); + mActivityName = mActivity.toString(); + mImmersionBarName = mActivityName + "_AND_" + dialog.toString(); + initParams(); + } + + /** + * 在Dialog里初始化 + * Instantiates a new Immersion bar. + * + * @param activity the activity + * @param dialog the dialog + */ + private ImmersionBar(Activity activity, Dialog dialog) { + mActivity = activity; + mDialog = dialog; + mWindow = mDialog.getWindow(); + mActivityName = mActivity.toString(); + mImmersionBarName = mActivityName + "_AND_" + dialog.toString(); initParams(); } @@ -120,12 +140,10 @@ private ImmersionBar(DialogFragment dialogFragment, Dialog dialog) { * @param dialogTag the dialog tag dialog标识,不能为空 */ private ImmersionBar(Activity activity, Dialog dialog, String dialogTag) { - WeakReference activityWeakReference = new WeakReference<>(activity); - WeakReference dialogWeakReference = new WeakReference<>(dialog); - mActivity = activityWeakReference.get(); - mDialog = dialogWeakReference.get(); + mActivity = activity; + mDialog = dialog; mWindow = mDialog.getWindow(); - mActivityName = mActivity.getClass().getName(); + mActivityName = mActivity.toString(); mImmersionBarName = mActivityName + "_AND_" + dialogTag; initParams(); } @@ -135,8 +153,9 @@ private ImmersionBar(Activity activity, Dialog dialog, String dialogTag) { * Init params. */ private void initParams() { + Log.e("mImmersionBarName = ", mImmersionBarName); mDecorView = (ViewGroup) mWindow.getDecorView(); - mContentView = (ViewGroup) mDecorView.findViewById(android.R.id.content); + mContentView = mDecorView.findViewById(android.R.id.content); mConfig = new BarConfig(mActivity); if (mMap.get(mImmersionBarName) == null) { mBarParams = new BarParams(); @@ -164,37 +183,46 @@ private void initParams() { * @return the immersion bar */ public static ImmersionBar with(@NonNull Activity activity) { - if (activity == null) - throw new IllegalArgumentException("Activity不能为null"); return new ImmersionBar(activity); } /** - * 调用该方法必须保证加载Fragment的Activity先初始化,已过时,使用with(Activity activity, Fragment fragment)方法 + * 调用该方法必须保证加载Fragment的Activity先初始化 * With immersion bar. * * @param fragment the fragment * @return the immersion bar */ public static ImmersionBar with(@NonNull Fragment fragment) { - if (fragment == null) - throw new IllegalArgumentException("Fragment不能为null"); return new ImmersionBar(fragment); } public static ImmersionBar with(@NonNull Activity activity, @NonNull Fragment fragment) { - if (activity == null) - throw new IllegalArgumentException("Activity不能为null"); - if (fragment == null) - throw new IllegalArgumentException("Fragment不能为null"); return new ImmersionBar(activity, fragment); } + + /** + * 在DialogFragment使用 + * With immersion bar. + * + * @param dialogFragment the dialog fragment + * @return the immersion bar + */ + public static ImmersionBar with(@NonNull DialogFragment dialogFragment) { + return new ImmersionBar(dialogFragment); + } + + /** + * 在DialogFragment使用,已过时 + * + * @param dialogFragment the dialog fragment + * @param dialog the dialog + * @return the immersion bar + * @deprecated 请使用ImmersionBar with(@NonNull DialogFragment dialogFragment) + */ + @Deprecated public static ImmersionBar with(@NonNull DialogFragment dialogFragment, @NonNull Dialog dialog) { - if (dialogFragment == null) - throw new IllegalArgumentException("DialogFragment不能为null"); - if (dialog == null) - throw new IllegalArgumentException("Dialog不能为null"); return new ImmersionBar(dialogFragment, dialog); } @@ -202,16 +230,26 @@ public static ImmersionBar with(@NonNull DialogFragment dialogFragment, @NonNull * 在dialog里使用 * With immersion bar. * + * @param activity the activity + * @param dialog the dialog + * @return the immersion bar + */ + public static ImmersionBar with(@NonNull Activity activity, @NonNull Dialog dialog) { + return new ImmersionBar(activity, dialog); + } + + /** + * 在dialog里使用,已过时 + * With immersion bar. + * * @param activity the activity * @param dialog the dialog * @param dialogTag the dialog tag * @return the immersion bar + * @deprecated 请使用ImmersionBar with(@NonNull Activity activity, @NonNull Dialog dialog) */ + @Deprecated public static ImmersionBar with(@NonNull Activity activity, @NonNull Dialog dialog, @NonNull String dialogTag) { - if (activity == null) - throw new IllegalArgumentException("Activity不能为null"); - if (dialog == null) - throw new IllegalArgumentException("Dialog不能为null"); if (isEmpty(dialogTag)) throw new IllegalArgumentException("tag不能为null或空"); return new ImmersionBar(activity, dialog, dialogTag); @@ -1777,10 +1815,9 @@ private void setTitleBar() { final ViewGroup.LayoutParams layoutParams = mBarParams.titleBarView.getLayoutParams(); if (layoutParams.height == ViewGroup.LayoutParams.WRAP_CONTENT || layoutParams.height == ViewGroup.LayoutParams.MATCH_PARENT) { - mBarParams.titleBarView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { + mBarParams.titleBarView.post(new Runnable() { @Override - public void onGlobalLayout() { - mBarParams.titleBarView.getViewTreeObserver().removeOnGlobalLayoutListener(this); + public void run() { if (mBarParams.titleBarHeight == 0) mBarParams.titleBarHeight = mBarParams.titleBarView.getHeight() + mConfig.getStatusBarHeight(); if (mBarParams.titleBarPaddingTopHeight == 0) diff --git a/build.gradle b/build.gradle index 647c513..90fa6ed 100644 --- a/build.gradle +++ b/build.gradle @@ -6,8 +6,9 @@ buildscript { jcenter() } dependencies { + classpath 'com.android.tools.build:gradle:3.0.0' - classpath 'com.novoda:bintray-release:0.5.0' + classpath 'com.novoda:bintray-release:0.8.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/gradle.properties b/gradle.properties index 69b4e93..144a0e7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,4 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true -android.enableAapt2=false +android.enableAapt2= false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 015c004..05e2141 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -#Mon Oct 30 09:42:51 CST 2017 +#Tue Aug 21 12:31:49 CST 2018 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/jar/immersionbar-2.3.1.jar b/jar/immersionbar-2.3.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..6b410a90afb6848c55e71bde784c7ef3b8bdb8dc GIT binary patch literal 34810 zcmbrkQ*>ru^eme0*tR;h?T(XRt@6dgqw=2uAMYiM`_P80)E-rtKvCtL3Of?oxgW7*QcmpnwJ)qRr#_)Da=B2T5gAT9vXh_pde$ah2%yA>r z5qhOSN%<5FSF3O;*6JGG3i6F=V8@1iQhjBO+&^uG9poX z#-=g{Ws-d`e_^M?W4m@ysTH1pyjX%DFC56$=XIdnZ$^iO$Cpl1fJWRZ7OmfS z)ea8F(!}8+Aele&zYVe;oU}9O8&hwrp^KAPW7cAp<=S>!&m$tCgOk%(*w02a6;mbF`v*um(O8Jum)@E-!pI!BL=@mW?nOBAuxqi!7B?Ox@7(@BU-WfkMl`5`TmA#eL?O5e9pv{oY@-}V8 zEP>@?iwPTFa0xANZO4sTG=rJeCTz{eF}~HXrtXegK4UYx@zN-h6Ba5~VjLy|I|eI# z&`|b#%$fc>*Qs?KWiyX<`6oMckMqUfXXg(P0i(9F7i6ExeG0RZs=>KW$K1<`;rkrZIg z*$dYi+ed&XkD(4Tss&+-!EF1c4rt(R)@MIH4^IaK^khI2f$YDn2?{+iqrotv$MGrK zS9^&9ZZj*hNP{{9tyyBrQ(1Yd_FZ4PqD_O0eg6_Ve?a@1^o92dg#>?sX%MH3@qVvr zL|h@FM$SqPNHFP*!*G&TJAHur8vCEV;C@X(xTXh~z@NQ9W-s2#0j_!mZftooCYQ*? z?Gg@^kBj}=ODW~yzh`gpzAE-fvzKpw%9=;!^&ukY*i)4kw>l3Nn6>YzczJz?E5}y9 zK+_hXVOoY)(?p=LPv7-<7_o3$KTac$CJXd1U|fZ`OO9Lz)w8}tpH-&wZnF6UF}+vD zsF)!iVc2PZv4=$E7mYR!vWQz83WXZiq!vN&xWa|Jhq&1ic@mhwW^*@V;c&5<3_)YI zuq^ka+B(O_nY=krs>#3mhR(3h3K^oB;8yhFV7IiX;6pLI=w744OGV){_Y(Y;g554~ zb}z>8jZ;M}FH3dTr%dzYbJ2jDP=A6hqw4JVt;;GJH}tbm`B+Em!8oZo{T?L80IfqPv}--8-rM0tWn8HIC!+Wk8-)bq5fC!pml8m z%OL;q*aicTtif}yUx<7mgLw|y=is(@%pf_WVcTTzS0O~--Klikd~!~`u(>dpWCV=v zZJ0KDMeQ__o^W;RV7&`udk1d&>-g9(p~P=0)jafL;a+gNRi#A#)c=tpt3)|P=%H}Tmye93*AP?!$#eZy;q(hS_Vf1 zXt=Keth~_18F;30G9qWj!c`{ESXHmh`GIWOHCbYh(3Ktfle3vA6+63bWAY=5rmTZM;Qy(1Y;>n=I8$%wtih>RPyK>%JZnUTo_r}HBkx4frmSRA{ z!z7t^h2OdR0t>QJoCdac^s(p%-uSCK3-};UZciQDpR|(d+sWBIJh3TghOJ< zn+2s5sXssa?#M!Rtu3;}Kxfgc6u8)%Tk(O`*~Qe;tel}NGSX3WTYp@OI6OH1&@BF; z<5n_i$j*k(+Ba_WVko1jjl|LtwzV)bR_-XR<{#$mu&ql*~CIencfj?k8W0?@ZS>BjMza2*E8caaBojrW;UJ3v%IC6iNNy zM(rcz8rJATb^7#!TLIa;tJBtvR%1juR1dMd{R5GoOwp5~cRB>YgUA2VQs7aQK zCK={HwY%-^K0_URPAUZB+pT@Qi|otB_18C`f$|0)f%gr}XAIGh3KkG3f{|s*8F2UE ztb{7)h#KOEvWXX{ai{Iv5Az5%<^2mX!vcH8@^qf&bljQt`8;g{H?;uwwR(e;Z!5lw z|9BLk1lu$14i~!##esqBdT?P?(z}MNi2G2{0p&bRSBJbgQm6(stPAfCL=D9wMCa_N zHQ{3DPNja!ooc4*y3UR1yDHHPU;HJ8d0IBQJ?(h2^fHP+3Ak-v2L2)uW&E^E@SDPG z

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 O?F9+|U=i@IqyGnkgdisX literal 0 HcmV?d00001 diff --git a/sample/build.gradle b/sample/build.gradle index d614c58..48d69c2 100644 --- a/sample/build.gradle +++ b/sample/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion '26.0.2' + compileSdkVersion 27 + buildToolsVersion '27.0.3' defaultConfig { applicationId "com.gyf.immersionbar" minSdkVersion 18 @@ -26,39 +26,39 @@ android { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { + implementation fileTree(include: ['*.jar'], dir: 'libs') + androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) - compile 'com.android.support:appcompat-v7:25.4.0' - compile 'com.android.support:design:25.4.0' - testCompile 'junit:junit:4.12' - compile project(':barlibrary') + implementation 'com.android.support:appcompat-v7:27.1.1' + implementation 'com.android.support:design:27.1.1' + testImplementation 'junit:junit:4.12' + implementation project(':barlibrary') //注解 - compile 'com.jakewharton:butterknife:8.5.1' + implementation 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1' //侧滑返回 - compile 'me.imid.swipebacklayout.lib:library:1.0.0' + implementation 'me.imid.swipebacklayout.lib:library:1.1.0' //log日志 - compile 'com.apkfuns.logutils:library:1.4.2.2' + implementation 'com.apkfuns.logutils:library:1.5.1.1' //轮播图 - compile 'com.youth.banner:banner:1.4.9' + implementation 'com.youth.banner:banner:1.4.9' //RecyclerView框架 - compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.18' + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.40' //图片加载框架 - compile 'com.github.bumptech.glide:glide:3.7.0' + implementation 'com.github.bumptech.glide:glide:3.7.0' //下拉刷新上拉加载 - compile 'com.lcodecorex:tkrefreshlayout:1.0.7' + implementation 'com.lcodecorex:tkrefreshlayout:1.0.7' //圆形imageView - compile 'de.hdodenhof:circleimageview:2.1.0' + implementation 'de.hdodenhof:circleimageview:2.2.0' // 模糊 - compile 'jp.wasabeef:blurry:2.1.1' + implementation 'jp.wasabeef:blurry:2.1.1' // 内存泄漏检测 - debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.1' - releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' - testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' + debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.1' + releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1' + testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.1' // Fragment框架 - compile 'me.yokeyword:fragmentation:1.1.1' + implementation 'me.yokeyword:fragmentation:1.1.1' //腾讯bugly - compile 'com.tencent.bugly:crashreport:latest.release' + implementation 'com.tencent.bugly:crashreport:2.6.6.1' } \ No newline at end of file diff --git a/sample/src/main/java/com/gyf/immersionbar/MyApp.java b/sample/src/main/java/com/gyf/immersionbar/MyApp.java index 8482fb4..0329084 100644 --- a/sample/src/main/java/com/gyf/immersionbar/MyApp.java +++ b/sample/src/main/java/com/gyf/immersionbar/MyApp.java @@ -13,9 +13,9 @@ public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); -// if (LeakCanary.isInAnalyzerProcess(this)) { -// return; -// } -// LeakCanary.install(this); + if (LeakCanary.isInAnalyzerProcess(this)) { + return; + } + LeakCanary.install(this); } } diff --git a/sample/src/main/java/com/gyf/immersionbar/activity/BlogActivity.java b/sample/src/main/java/com/gyf/immersionbar/activity/BlogActivity.java index 419b8e5..d0f1115 100644 --- a/sample/src/main/java/com/gyf/immersionbar/activity/BlogActivity.java +++ b/sample/src/main/java/com/gyf/immersionbar/activity/BlogActivity.java @@ -40,7 +40,7 @@ protected void initView() { if (blog.equals("github")) { mWebView.loadUrl("https://github.com/gyf-dev/ImmersionBar"); } else { - mWebView.loadUrl("http://www.jianshu.com/p/2a884e211a62"); + mWebView.loadUrl("https://www.jianshu.com/p/2a884e211a62"); } mWebView.setWebViewClient(new WebViewClient() { @Override diff --git a/sample/src/main/java/com/gyf/immersionbar/activity/DialogActivity.java b/sample/src/main/java/com/gyf/immersionbar/activity/DialogActivity.java index 5b0e033..d37acf5 100644 --- a/sample/src/main/java/com/gyf/immersionbar/activity/DialogActivity.java +++ b/sample/src/main/java/com/gyf/immersionbar/activity/DialogActivity.java @@ -13,7 +13,6 @@ import android.widget.Button; import com.gyf.barlibrary.ImmersionBar; -import com.gyf.barlibrary.OSUtils; import com.gyf.immersionbar.R; import com.gyf.immersionbar.fragment.dialog.BottomDialogFragment; import com.gyf.immersionbar.fragment.dialog.FullDialogFragment; @@ -135,7 +134,7 @@ public void onClick(View view) { window.setGravity(Gravity.TOP); window.setWindowAnimations(R.style.RightDialog); window.setLayout(width, height); - mImmersionBarDialog = ImmersionBar.with(this, dialog, "Full"); + mImmersionBarDialog = ImmersionBar.with(this, dialog); mImmersionBarDialog.titleBar(toolbar) .navigationBarColor(R.color.btn3) .keyboardEnable(true) @@ -145,21 +144,21 @@ public void onClick(View view) { window.setGravity(Gravity.TOP); window.setWindowAnimations(R.style.TopDialog); window.setLayout(width, height / 2); - mImmersionBarDialog = ImmersionBar.with(this, dialog, "Top"); + mImmersionBarDialog = ImmersionBar.with(this, dialog); mImmersionBarDialog.titleBar(toolbar).navigationBarWithKitkatEnable(false).init(); break; case R.id.btn_bottom: window.setGravity(Gravity.BOTTOM); window.setWindowAnimations(R.style.BottomDialog); window.setLayout(width, height / 2); - mImmersionBarDialog = ImmersionBar.with(this, dialog, "Bottom"); + mImmersionBarDialog = ImmersionBar.with(this, dialog); mImmersionBarDialog.navigationBarColor(R.color.cool_green_normal).init(); break; case R.id.btn_left: window.setGravity(Gravity.TOP | Gravity.START); window.setWindowAnimations(R.style.LeftDialog); window.setLayout(width * 2 / 3, height); - mImmersionBarDialog = ImmersionBar.with(this, dialog, "Left"); + mImmersionBarDialog = ImmersionBar.with(this, dialog); mImmersionBarDialog.titleBar(toolbar) .navigationBarColor(R.color.btn11) .keyboardEnable(true).init(); @@ -168,7 +167,7 @@ public void onClick(View view) { window.setGravity(Gravity.TOP | Gravity.END); window.setWindowAnimations(R.style.RightDialog); window.setLayout(width * 2 / 3, height); - mImmersionBarDialog = ImmersionBar.with(this, dialog, "Right"); + mImmersionBarDialog = ImmersionBar.with(this, dialog); mImmersionBarDialog.titleBar(toolbar) .navigationBarColor(R.color.btn6) .keyboardEnable(true) diff --git a/sample/src/main/java/com/gyf/immersionbar/fragment/dialog/BaseDialogFragment.java b/sample/src/main/java/com/gyf/immersionbar/fragment/dialog/BaseDialogFragment.java index 3f21b3d..793c485 100644 --- a/sample/src/main/java/com/gyf/immersionbar/fragment/dialog/BaseDialogFragment.java +++ b/sample/src/main/java/com/gyf/immersionbar/fragment/dialog/BaseDialogFragment.java @@ -115,7 +115,7 @@ protected boolean isImmersionBarEnabled() { * 初始化沉浸式 */ protected void initImmersionBar() { - mImmersionBar = ImmersionBar.with(this, getDialog()); + mImmersionBar = ImmersionBar.with(this); mImmersionBar.init(); } diff --git a/sample/src/main/java/com/gyf/immersionbar/fragment/one/HomeOneFragment.java b/sample/src/main/java/com/gyf/immersionbar/fragment/one/HomeOneFragment.java index 739a6f6..76babe4 100755 --- a/sample/src/main/java/com/gyf/immersionbar/fragment/one/HomeOneFragment.java +++ b/sample/src/main/java/com/gyf/immersionbar/fragment/one/HomeOneFragment.java @@ -1,5 +1,6 @@ package com.gyf.immersionbar.fragment.one; +import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; @@ -12,10 +13,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.LinearLayout; import com.chad.library.adapter.base.BaseQuickAdapter; import com.gyf.barlibrary.ImmersionBar; import com.gyf.immersionbar.R; +import com.gyf.immersionbar.activity.FragmentOneActivity; import com.gyf.immersionbar.adapter.OneAdapter; import com.gyf.immersionbar.utils.GlideImageLoader; import com.lcodecore.tkrefreshlayout.RefreshListenerAdapter; @@ -39,6 +42,8 @@ public class HomeOneFragment extends BaseLazyFragment { RecyclerView mRv; @BindView(R.id.refreshLayout) TwinklingRefreshLayout refreshLayout; + @BindView(R.id.llScan) + LinearLayout mLlScan; private OneAdapter mOneAdapter; private List mItemList = new ArrayList<>(); private List mImages = new ArrayList<>(); @@ -171,6 +176,13 @@ public void onPullDownReleasing(TwinklingRefreshLayout refreshLayout, float frac } } }); + + mLlScan.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + startActivity(new Intent(getActivity(), FragmentOneActivity.class)); + } + }); } private List addData() { diff --git a/sample/src/main/res/layout/drawer_left.xml b/sample/src/main/res/layout/drawer_left.xml index 1ed9e2d..4c2c5e3 100644 --- a/sample/src/main/res/layout/drawer_left.xml +++ b/sample/src/main/res/layout/drawer_left.xml @@ -116,5 +116,5 @@ android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="20dp" - android:text="当前版本:2.3.0" /> + android:text="当前版本:2.3.1" /> \ No newline at end of file diff --git a/sample/src/main/res/layout/title_bar_one.xml b/sample/src/main/res/layout/title_bar_one.xml index 55cc563..bdb0825 100644 --- a/sample/src/main/res/layout/title_bar_one.xml +++ b/sample/src/main/res/layout/title_bar_one.xml @@ -15,11 +15,14 @@ android:orientation="horizontal"> @@ -48,8 +51,8 @@ android:layout_weight="1" android:background="@drawable/shape_seek" android:cursorVisible="false" - android:drawableStart="@mipmap/seek" android:drawablePadding="10dp" + android:drawableStart="@mipmap/seek" android:hint="搜一搜" android:padding="10dp" android:textColor="@color/colorBarText" diff --git a/sample/src/main/res/values/colors.xml b/sample/src/main/res/values/colors.xml index 8286e51..bcf214a 100644 --- a/sample/src/main/res/values/colors.xml +++ b/sample/src/main/res/values/colors.xml @@ -45,5 +45,5 @@ #999999 #46c01b - #1E2327 + #24292E