这是一个系列,我们将其命名为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文件,例如:

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

    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,谢谢。

更多相关文章

  1. Android最佳实践(一)
  2. Android(安卓)程序主菜单 布局
  3. Android(安卓)开发实践(一)开始你的 Hello World
  4. Android下修改SeekBar样式
  5. Android下修改SeekBar样式
  6. Android下修改SeekBar样式
  7. Android(安卓)NDK开发之旅 目录
  8. Android实现LIstView条目单选和多选RadioButton
  9. android selector状态详解

随机推荐

  1. Android历史版本与API Level对应关系对照
  2. 图解Android和Linux发行版的区别
  3. Android学习笔记:Android异步任务之AsyncT
  4. Android的Activity屏幕切换动画(二)-左右
  5. Android(安卓)计时器Timer用法
  6. android. MVC三层分层
  7. Android(安卓)RIL概述
  8. Android(安卓)屏幕适配全攻略
  9. Android移植成功:linux-2.6.25.8+U盘挂载
  10. Android(安卓)开发:(四)Android五大布局及属