zoukankan      html  css  js  c++  java
  • ANDROID L——Material Design详细解释(UI控制)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!



    Android L:


    Google已经确认Android L就是Android Lollipop(5.0)。


    前几天发现Android5.0正式版的sdk已经能够下载了。并且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市。

    所以是时候開始学习Android L了。

    关于Android L怎样配置模拟器和创建项目,假设大家有兴趣的话能够看看我之前的一篇文章:

    Android L——模拟器配置及创建项目





    Material Design:



    Material Design是Google推出的一个全新的设计语言,它的特点就是拟物扁平化。


    Material Design包括了非常多内容,我大致把它分为四部分:

    主题和布局——ANDROID L——Material Design具体解释(主题和布局)

    视图和阴影——ANDROID L——Material Design具体解释(视图和阴影)

    UI控件——ANDROID L——Material Design具体解释(UI控件)

    动画——ANDROID L——Material Design具体解释(动画篇)


    今天就先来说说第三部分——Material新增的UI控件




    UI控件

    在Android L中新增了两个控件各自是RecyclerViewCardView


    RecyclerView:


    RecyclerView是ListView的升级版,它提供了更好的性能并且更easy使用。




    RecyclerView这个控件是一个能够装载大量的视图集合,而且能够很效率的进行回收和滚动。当你list中的元素常常动态改变时能够使用RecyclerView控件。

    RecyclerView很easy使用,它提供了例如以下两个功能:

    为每一个条目位置提供了layout管理器(RecyclerView.setLayoutManager

    为每一个条目设置了操作动画(RecyclerView.setItemAnimator


    以下的样例介绍了怎样定义和使用一个RecyclerView

    1.在布局文件里加入一个RecyclerView

    <!-- A RecyclerView with some commonly used attributes -->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/my_recycler_view"
        android:scrollbars="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>


    2.初始化RecyclerView參数。设置layoutManager和adapter

    public class MyActivity extends Activity {
        private RecyclerView mRecyclerView;
        private RecyclerView.Adapter mAdapter;
        private RecyclerView.LayoutManager mLayoutManager;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.my_activity);
            mRecyclerView = (RecyclerView) findViewById(R.id.my_recycler_view);
    
            // improve performance if you know that changes in content
            // do not change the size of the RecyclerView
            mRecyclerView.setHasFixedSize(true);
    
            // use a linear layout manager
            mLayoutManager = new LinearLayoutManager(this);
            mRecyclerView.setLayoutManager(mLayoutManager);
    
            // specify an adapter (see also next example)
            mAdapter = new MyAdapter(myDataset);
            mRecyclerView.setAdapter(mAdapter);
        }
        ...
    }

    3.创建一个adapter

    public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
        private String[] mDataset;
    
        // Provide a reference to the type of views that you are using
        // (custom viewholder)
        public static class ViewHolder extends RecyclerView.ViewHolder {
            public TextView mTextView;
            public ViewHolder(TextView v) {
                super(v);
                mTextView = v;
            }
        }
    
        // Provide a suitable constructor (depends on the kind of dataset)
        public MyAdapter(String[] myDataset) {
            mDataset = myDataset;
        }
    
        // Create new views (invoked by the layout manager)
        @Override
        public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent,
                                                       int viewType) {
            // create a new view
            View v = LayoutInflater.from(parent.getContext())
                                   .inflate(R.layout.my_text_view, parent, false);
            // set the view's size, margins, paddings and layout parameters
            ...
            ViewHolder vh = new ViewHolder(v);
            return vh;
        }
    
        // Replace the contents of a view (invoked by the layout manager)
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            // - get element from your dataset at this position
            // - replace the contents of the view with that element
            holder.mTextView.setText(mDataset[position]);
    
        }
    
        // Return the size of your dataset (invoked by the layout manager)
        @Override
        public int getItemCount() {
            return mDataset.length;
        }
    }


    CardView:


    CardView继承自FrameLayout。同意你在card视图中显示信息. CardView也能够设置阴影和圆角。(事实上如今非常多应用都自己定义了Card视图,Google这回将card视图作为基本控件,能够拿来直接使用了)





    Layout中为CardView设置圆角使用card_view:cardCornerRadius属性

    代码中为CardView设置圆角使用CardView.setRadius方法

    CardView设置背景颜色使用card_view:cardBackgroundColor属性


    在布局中包括一个CardView,例如以下:

    <!-- A CardView that contains a TextView -->
    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/card_view"
        android:layout_gravity="center"
        android:layout_width="200dp"
        android:layout_height="200dp"
        card_view:cardCornerRadius="4dp">
    
        <TextView
            android:id="@+id/info_text"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </android.support.v7.widget.CardView>

    兼容性:

    RecyclerViewCardView都包括在Android L Developer Preview Support Library中。所以他们能够在之前的版本号中使用,仅仅会有一些限制。




    总结:


    我将Material Design分为例如以下四部分:

    主题和布局——ANDROID L——Material Design具体解释(主题和布局)

    视图和阴影——ANDROID L——Material Design具体解释(视图和阴影)

    UI控件——ANDROID L——Material Design具体解释(UI控件)

    动画——ANDROID L——Material Design具体解释(动画篇)


    本文所介绍的两个控件(RecyclerViewCardView)很重要,由于在以后Android L的开发中会经经常使用到。



    这篇文章介绍的内容都是从官方文档翻译过来的,大家看着可能有点迷糊。只是没关系。过几天我会更新一个介绍RecyclerViewCardView在Android Studio和Eclipse中是怎样导包。和两个控件结合使用的小Demo。

    Android L——RecyclerView,CardView导入和使用(Demo)


    Material Desgin的介绍仅仅剩下动画部分了我会尽快更新,敬请期待。。。



    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    021.day21 反射 Class类 反射常用操作
    020.day20 线程概述 多线程优缺点 线程的创建 线程常用方法 生命周期 多线程同步
    019.day19 缓冲流 对象流 标准输入输出流
    018.day18 map集合如何实现排序 File类 IO流 字节流 字符流 编码
    017.day17 Map接口 克隆 treeSet集合排重缺陷
    016.day16 HashSet TreeSet 比较器Comparable Comparator
    015.day15
    014.day14
    013.day13
    线程
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4681969.html
Copyright © 2011-2022 走看看