Android最佳实践(七)之AppCompat 23.2.0

发布时间:2019-06-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Android最佳实践(七)之AppCompat 23.2.0脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

这是一个系列,我们将其命名为android最佳实践,如果你还没有看之前的文章

Android最佳实践(一)

android最佳实践(二)

android最佳实践(三)

android最佳实践(四)

android最佳实践(五)

Android最佳实践(六)之扫描二维码模块

在2016年的2月24日,GOOGLE的AndROId开发团队发布了:

compile 'com.android.support:appcompat-v7:23.2.0'

那么其和我们现阶段用的23.1有什么区别呢,在这篇博客中,将会讲解appcompat23.2的新特性以及编写相关实验代码,供大家一起学习。

那么,就从我最喜欢的AppCompat DayNight theme和 Bottom Sheets讲起吧

AppCompat DayNight theme

其提供了日夜模式,其对应有四种状态:

public static final int MODE_NIGHT_NO = 1;

public static final int MODE_NIGHT_YES = 2;

public static final int MODE_NIGHT_AUTO = 0;

public static final int MODE_NIGHT_FOLLOW_SysTEM = -1;

其分别对应的是:不使用夜间模式,使用夜间模式,根据地理位置推算白天夜晚自动进入夜间或白天模式,根据Android系统设置的模式。

首先你需要在你的gradle文件中加入该版本的依赖包,然后修改主题为Theme.AppCompat.DayNight,同样的你可以添加以night为后缀的value文件,例如:

Android最佳实践(七)之AppCompat 23.2.0

定义完主题后,你可以在整个应用程序中设置默认值,比如:

    AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);

或者你可以通过setLocalNightMode方法,动态的设定主题。例如:

   mButtonDay.setOnClickListener(new View.OnClickListener() {
            @override
            public void onClick(View v) {
                getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO);
                recreate();
            }
        });
   mButtonNight.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES);
                recreate();
            }
        });

是不是很简单!你也可以查看https://github.com/neuyu/android-support-new-features

Bottom Sheets

相信大部分同事都有过模仿ios的bottomsheet吧,现在Android的MATErial design来了。

现在你仅仅需要将design包加入到你的项目:

compile 'com.android.support:design:23.2.0'

然后:

BottomSheetDiaLOG dialog = new BottomSheetDialog(context);

View view = LayoutInflater.From(context).inflate(R.layout.bottom_sheet_list, null);

RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.bottom_sheet_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
recyclerView.setAdapter(new SimpleAdapter());
dialog.setContentView(view);
dialog.show();

其用法类似DialogFragment,需要自定义布局,具体的如何为其为其添加点击事件等。
通过附加一个BottomSheetBehavior到子视图的CoordinatorLayout(添加app:layout_behavior =“android.support.design.widget.BottomSheetBehavior”),通过对BottomSheet的操作我们可以得到它的五种状态。

STATE_COLLAPSED:关闭Bottom Sheets,高度可控属性app:behavior_PEekHeight(默认为0)
STATE_DragginG:在用户直接拖动Bottom Sheets向上或向下的中间状态
STATE_SETTLING:当Bottom Sheets被释放和沉降到其最终位置记录的状态
STATE_ExpANDED:Bottom Sheets展开时的状态
STATE_HIDDEN:默认情况下禁用(和启用应用程序:behavior_hideable属性),这使得用户可以向下滑动Bottom Sheets完全隐藏底部。

支持矢量图片和矢量图片动画

关于矢量图和动画以及bottom sheets的事件监听会在gIThub中以代码的形式给出,欢迎大家fork和star,谢谢。

脚本宝典总结

以上是脚本宝典为你收集整理的Android最佳实践(七)之AppCompat 23.2.0全部内容,希望文章能够帮你解决Android最佳实践(七)之AppCompat 23.2.0所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。