Andorid Support Design库 新控件 (上)

1、android.support.design.widget.TextInputLayout
强大带提示的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();
        }

    }


2,android.support.design.widget.FloatingActionButton
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;
            }
        });


    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值