1、android.support.design.widget.TextInputLayout
强大带提示的MD风格的EditText
在MD中,使用TextInputLayout将EditText进行了封装,提示信息会变成一个显示在EditText之上的floating label,
这样用户就始终知道他们现在输入的是什么,而且过度动画是平滑的。还可以在下方通过setError设置Error提示,
MD风格的圆形按钮,来自于ImageView
一个负责显示界面基本操作的圆形按钮。Design library中的FloatingActionButton 实现了一个默认颜色为主题中
colorAccent的悬浮操作按钮。除了一般大小的悬浮操作按钮,它还支持mini size(fabSize=”mini”)。
FloatingActionButton继承自ImageView,你可以使用android:src或者 ImageView的任意方法,
比如setImageDrawable()来设置FloatingActionButton里面的图标。
3,android.support.design.widget.Snackbar
类似Toast,添加了简单的单个Action
Snackbar为一个操作提供轻量级、快速的反馈。Snackbar显示在屏幕的底部(有MD动画效果浮现和消失),
包含了文字信息与一个可选的操作按钮。在指定时间结束之后自动消失。另外,用户还可以在超时之前将它滑动删除。
Snackbar被看作是比Toast更强大的快速反馈机制,你会发现他们的API非常相似。
你应该注意到了make()方法中把一个View作为第一个参数(Snackbar试图找到一个合适的父亲以确保自己是被放置于底部)
4,android.support.design.widget.NavigationView DrawerLayout的SlideMenu
抽屉导航是app识别度与内部导航的关键,保持这里设计上的一致性对app的可用性至关重要,尤其是对于第一次使用的用户。
NavigationView 通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素。
把NavigationView作为 DrawerLayout的内容视图来使用。NavigationView处理好了和状态栏的关系,
可以确保NavigationView在API21+ 设备上正确的和状态栏交互。
注意项:
你可以通过设置一个OnNavigationItemSelectedListener,使用其 setNavigationItemSelectedListener()来获得元素
被选中的回调事件。它为你提供被点击的菜单元素,让你可以处理选择事件、改变复选框状态、加载新内容、
关闭导航菜单,以及其他任何你想做的操作。你会注意到NavigationView的两个新自定义属性如下:
new attr description
app:headerLayout 控制头部的布局
app:menu 导航菜单的资源文件(也可以在运行时配置)
强大带提示的MD风格的EditText
在MD中,使用TextInputLayout将EditText进行了封装,提示信息会变成一个显示在EditText之上的floating label,
这样用户就始终知道他们现在输入的是什么,而且过度动画是平滑的。还可以在下方通过setError设置Error提示,
使用比较简单
<android.support.design.widget.TextInputLayout
android:id="@+id/id_textinput_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/id_et_show"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入银行卡密码" />
</android.support.design.widget.TextInputLayout>
<Button
android:id="@+id/id_input_btn"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="onClick"
android:text="点击取款" />
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_input);
mTextLayout = (TextInputLayout) findViewById(R.id.id_textinput_layout);
mEt = (EditText) findViewById(R.id.id_et_show);
}
public void onClick(View view) {
String password = mEt.getText().toString();
if (TextUtils.isEmpty(password)) {
//设置是否显示错误信息
mTextLayout.setErrorEnabled(true);
//设置错误信息的内容
mTextLayout.setError("你还没有输入任何密码");
} else {
//去除错误的信息
mTextLayout.setErrorEnabled(false);
Toast.makeText(TextInputActivity.this, "你还信用卡的日期到了,当前累计欠费1亿元!!", Toast.LENGTH_SHORT).show();
}
}
MD风格的圆形按钮,来自于ImageView
一个负责显示界面基本操作的圆形按钮。Design library中的FloatingActionButton 实现了一个默认颜色为主题中
colorAccent的悬浮操作按钮。除了一般大小的悬浮操作按钮,它还支持mini size(fabSize=”mini”)。
FloatingActionButton继承自ImageView,你可以使用android:src或者 ImageView的任意方法,
比如setImageDrawable()来设置FloatingActionButton里面的图标。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.jht.administrator.day1024.FloatingActionActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/id_rv"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>
<android.support.design.widget.FloatingActionButton
android:onClick="click"
android:id="@+id/id_fab"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_margin="10dp"
app:backgroundTint="#ff0000"
android:src="@mipmap/ic_launcher"
app:elevation="10dp"
app:rippleColor="@color/colorPrimary"
/>
</RelativeLayout>
public class FloatingActionActivity extends AppCompatActivity {
private RecyclerView mrecycleView;
private FloatingActionButton mfabtn;
private List<String> list;
private LinearLayoutManager manager;
private MyAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_floating_action);
mrecycleView = (RecyclerView) findViewById(R.id.id_rv);
mfabtn = (FloatingActionButton) findViewById(R.id.id_fab);
initData();
}
private void initData() {
list = new ArrayList<>();
for (int i = 0; i < 80; i++) {
list.add("第" + i + "内容");
}
manager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mrecycleView.setLayoutManager(manager);
adapter = new MyAdapter(list, this);
mrecycleView.setAdapter(adapter);
}
public void click(View view) {
if (view.getId() == R.id.id_fab) {
mrecycleView.scrollToPosition(0);
}
}
}
3,android.support.design.widget.Snackbar
类似Toast,添加了简单的单个Action
Snackbar为一个操作提供轻量级、快速的反馈。Snackbar显示在屏幕的底部(有MD动画效果浮现和消失),
包含了文字信息与一个可选的操作按钮。在指定时间结束之后自动消失。另外,用户还可以在超时之前将它滑动删除。
Snackbar被看作是比Toast更强大的快速反馈机制,你会发现他们的API非常相似。
你应该注意到了make()方法中把一个View作为第一个参数(Snackbar试图找到一个合适的父亲以确保自己是被放置于底部)
public void onClick(View view) {
switch (view.getId()){
case R.id.button1:
Toast.makeText(this,"我是吐司,我资格老!!",Toast.LENGTH_LONG).show();
break;
case R.id.button2:
Snackbar.make(view,"我是SnackBar,我功能全~~",Snackbar.LENGTH_LONG).setAction("点击确定", new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("tag","其实都是对话框");
}
}).show();
}
}
4,android.support.design.widget.NavigationView DrawerLayout的SlideMenu
抽屉导航是app识别度与内部导航的关键,保持这里设计上的一致性对app的可用性至关重要,尤其是对于第一次使用的用户。
NavigationView 通过提供抽屉导航所需的框架让实现更简单,同时它还能够直接通过菜单资源文件直接生成导航元素。
把NavigationView作为 DrawerLayout的内容视图来使用。NavigationView处理好了和状态栏的关系,
可以确保NavigationView在API21+ 设备上正确的和状态栏交互。
注意项:
你可以通过设置一个OnNavigationItemSelectedListener,使用其 setNavigationItemSelectedListener()来获得元素
被选中的回调事件。它为你提供被点击的菜单元素,让你可以处理选择事件、改变复选框状态、加载新内容、
关闭导航菜单,以及其他任何你想做的操作。你会注意到NavigationView的两个新自定义属性如下:
new attr description
app:headerLayout 控制头部的布局
app:menu 导航菜单的资源文件(也可以在运行时配置)
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawerlayout"
>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent">
<TextView
android:id="@+id/id_draw_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="这是内容界面"
android:textSize="20sp" />
</RelativeLayout>
<android.support.design.widget.NavigationView
android:id="@+id/nationgeation"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="left"
app:headerLayout="@layout/hear_layout"
app:menu="@menu/navigation_selection">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
public class NavigationActivity extends AppCompatActivity {
private DrawerLayout drawerLayout;
private NavigationView navigationView;
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
drawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
navigationView = (NavigationView) findViewById(R.id.nationgeation);
context = this;
//获得navagation的当前头视图
View view = navigationView.getHeaderView(0);
TextView tv_head = (TextView) view.findViewById(R.id.header_tv);
//设置菜单项的点击事件
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about_menu:
Toast.makeText(context, "点击了关于我们的选项", Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(Gravity.LEFT);//点击之后关闭菜单
break;
case R.id.setting_menu:
Toast.makeText(context, "点击了设置的选项", Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(Gravity.LEFT);
break;
case R.id.clear_menu:
Toast.makeText(context, "点击了关于清除的选项", Toast.LENGTH_SHORT).show();
drawerLayout.closeDrawer(Gravity.LEFT);
break;
}
return false;
}
});
}
}