《Android进阶之光》--Material Design
No1:
组件:
1)底部工作条-Bottom Sheets
2)卡片-Cards
3)提示框-Dialogs
4)菜单-Menus
5)选择器
6)滑块控件-Sliders
7)进度和动态
8)Snackbar(底部可操作弹出框)与Toast
9)Tab
No2:
Snackbar
包含了文字信息和一个可选的操作按钮
Snackbar.make(activity_main,"标题",Snackbar.LENGTH_LONG)
.setAction("点击事件",new View.OnClickListener(){
@Override
public void onClick(View v){
Toast.makeText(
MainActivity.this,
"Toast",
Toast.LENGTH_LONG).show();
}
}).setDuration(Snackbar.LENGTH_LONG).show();
make第一个参数是View类型的参数,是Snackbar的父控件
No3:
TextInputLayout输入框容器(hint上浮,错误提示下方显示)
效果图
<android.support.design.widget.TextInputLayout
android:id="@+id/t1_username"
android:layout_width="match_parent"
android:layout_height="warp_content"
android:layout_centerInParent="true">
<EditText
android:id="@+id/et_username"
android:layout_width="match_parent"
android:layout_height="warp_content"
android:hint="username"
android:maxLength="25"
android:maxLines="1"/>
</android.support.design.widget.TextInputLayout>
private void login(){
String username = t1_username.getEditText().getText().toString();
String password = t1_password.getEditText().getText().toString();
if(!validateUserName(username)){
t1_username.setErrorEnabled(true);
t1_username.setError("请输入正确的邮箱地址");
}else if(!validatePassword(password)){
t1_password.setErrorEnabled(true);
t1_password.setError("密码数字过少");
}else{
t1_username.setErrorEnabled(false);
t1_password.setErrorEnabled(false);
Toast.makeText(getApplicationContext(),"登陆成功",Toast.LENGTH_SHORT).show();
}
}
No4:
自定义Bahavior
CoordinatorLayout中最经典的设计就是Bahavior,app:layout_behavior="@string/appbar_scrolling_view_behavior"的值对应着的是AppBarLayout.ScrollingViewBehavior。
自定义Behavior分两种方法:
1)定义的View监听CoordinatorLayout里的滑动状态。注意重写onStartNestedScroll()和onNestedPreScroll()方法
2)定义的View监听另一个View的状态变化。注意重写layoutDependsOn()和onDependentViewChanged()方法
然后在联动的布局中加入
app:layout_behavior="com.example.liuwangshu.mooncoordinatorlayout.FooterBehavior"即可
《Android进阶之光》--Material Design的更多相关文章
- [置顶]
曙光到来,我的新书《Android进阶之光》已出版
独立博客版本请点击这里 由来 2016年我开始建立了自己的知识体系,所有的文章都是围绕着这个体系来写,随着这个体系的慢慢成长,开始有很多出版社联系我写书,因为比较看好电子工业出版社,就顺理成章的开始了 ...
- 《Android进阶之光》--注解与依赖注入框架
No1: 标准注解: 1)@Override:覆写 2)@Deprecated:过时 3)@SuppressWarnings:取消警告 4)@SafeVarargs:申明使用了可变长度参数的方法 No ...
- 【Android】进入Material Design时代
由于本文引用了大量官方文档.图片资源,以及开源社区的Lib和相关图片资源,因此在转载的时候,务必注明来源,如果使用资源请注明资源的出处,尊重版权,尊重别人的劳动成果,谢谢! Material Desi ...
- [转]Android 5.0——Material Design详解(动画篇)
Material Design:Google推出的一个全新的设计语言,它的特点就是拟物扁平化. Material Design包含了很多内容,今天跟大家分享一下Material新增的动画: 在Andr ...
- 《Android进阶之光》--Android新特性
Android 5.0新特性 1)全新的Material Design设计风格 2)支持多种设备 3)全新的通知中心设计--按照优先级显示 4)支持64位ART虚拟机 5)多任务视窗Overview ...
- Android进阶之光-第1章-Android新特性-读书笔记
第 1 章 Android 新特性 1.1 Android 5.0 新特性 1.1.1 Android 5.0 主要新特性 1. 全新的 Material Design 新风格 Material De ...
- 《Android进阶之光》--Dagger2
No1: Project的build.gradle文件添加 buildscript{ dependencies{ ...classpath 'com.neenbedankt.gradle.plugin ...
- 《Android进阶之光》--事件总线
No1: EventBus三要素: 1)Event:事件 2)Subscriber:事件订阅者 3)Publisher:事件发布者 No2: EventBus的4种ThreadMode(线程模型): ...
- 《Android进阶之光》--ButterKnife
No1: 添加依赖库 Project的build.gradle文件添加 buildscript{ ... dependencies{ ... classpath 'com.neenbedankt.gr ...
随机推荐
- 【BZOJ4826】【HNOI2017】影魔(扫描线,单调栈)
[BZOJ4826][HNOI2017]影魔(扫描线,单调栈) 题面 BZOJ 洛谷 Description 影魔,奈文摩尔,据说有着一个诗人的灵魂.事实上,他吞噬的诗人灵魂早已成千上万.千百年来,他 ...
- luogu P3576 [POI2014]MRO-Ant colony
传送门 一群蚂蚁能被吃,也就是走到指定边的两端点之一要走到另一端点时有\(k\)只,我们可以从这两端点逆推,记两个值为走到某个点时最后会被吃掉\(k\)只蚂蚁的蚂蚁数量范围,式子下面有,很好理解(雾) ...
- zabbix 源码分析 another/first network error wait for 15s seconds 出现原因及调优建议
在监控设备的时候,在server端的日志中有时候会见到类似another network error, wait for 15s seconds的异常,今天我们看下这个问题的出现原因和解决方案: 问题 ...
- GET和POST有什么区别?及为什么网上多数答案都是错的(转载)
这仅仅是我认为比较好的关于get和post区别的解答,然后把作者的一些文字踢除留下比较干的部分. 作者:南柯之石链接:http://www.cnblogs.com/nankezhishi/archiv ...
- AQS框架
java并发包基石 AQS是JUC中很多同步组件的构建基础,简单来讲,它内部实现主要是状态变量state和一个FIFO队列来完成,同步队列的头结点是当前获取到同步状态的结点,获取同步状态state失败 ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- 网络常用的linux系统调用
网络之常用的Linux系统调用 下面一些函数已经过时,被新的更好的函数所代替了(gcc在链接这些函数时会发出警告),但因为兼容的原因还保留着,这些函数将在前面标上“*”号以示区别. 一.进程控制 fo ...
- java并发编程系列七:volatile和sinchronized底层实现原理
一.线程安全 1. 怎样让多线程下的类安全起来 无状态.加锁.让类不可变.栈封闭.安全的发布对象 2. 死锁 2.1 死锁概念及解决死锁的原则 一定发生在多个线程争夺多个资源里的情况下,发生的原因是 ...
- C/C++:函数调用规则__stdcall,__cdecl,__pascal,__fastcall
__cdecl __cdecl 是 C Declaration 的缩写,表示 C 语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈.被调用函数不会要求调用者传递多 ...
- 面向对象特征:封装、多态 以及 @propetry装饰器
(继承补充)组合 obj=fun()#对象 obj.attr=foo()#对象的属性等于另一个对象 什么是组合: A类的对象具备某一个属性,该属性的值是B类的对象 基于这种方式就把A类与B ...