Android5.0(lollipop)新特性介绍(一)
2015-11-19 15:19
399 查看
今年6月的Google I/O大会上,Android L的初次见面我相信让会让很多android粉丝有些小激动和小期待,当然作为开发者的我来说,激动不言而喻,毕竟这是自08年以来改变最大的一个版本。新的设计语言(Material Design),5000多个新增api。废话不多说,今天要说的基本都是在Android5.0中很常见,也算是对自己学习的一种记录。
顾名思义,CardView 卡片视图,继承自framelayout,可以通过设置圆角以及阴影来展示带有像卡片一样的效果
用法:在布局声明CardView(注意:需要引入android-support-v7-cardview.jar)
在Activity中通过调用mCardView.setRadius(progress)与mCardView.setElevation(progress)方法来分别设置CardView的圆角和阴影。
RecyclerView的出现可以替代ListView和GridView,它标准化了ViewHolder,之前我们在写ListView的Adapter时需要自定义ViewHolder来提升ListView速度。使用RecyclerView的时候必须要设置LayoutManager,它会通知系统以什么样的布局来展示RecyclerView,目前系统提供了2种LayoutManager,LinearLayoutManager和GridLayoutManager对应着线性和格子,当然了也可以自定义LayoutManager来满足各种需求
用法:布局文件中声明RecyclerView(注意:需要引入android-support-v7-recyclerview.jar)
在Activity中调用如下代码
CustomAdapter代码如下
1.CardView
顾名思义,CardView 卡片视图,继承自framelayout,可以通过设置圆角以及阴影来展示带有像卡片一样的效果用法:在布局声明CardView(注意:需要引入android-support-v7-cardview.jar)
<span style="font-size:14px;"><android.support.v7.widget.CardView android:id="@+id/cardview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:elevation="100dp" card_view:cardBackgroundColor="@color/cardview_initial_background" card_view:cardCornerRadius="8dp" android:layout_marginLeft="@dimen/margin_large" android:layout_marginRight="@dimen/margin_large"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="@dimen/margin_medium" android:text="@string/cardview_contents"/> </android.support.v7.widget.CardView></span>
在Activity中通过调用mCardView.setRadius(progress)与mCardView.setElevation(progress)方法来分别设置CardView的圆角和阴影。
2.RecyclerView
RecyclerView的出现可以替代ListView和GridView,它标准化了ViewHolder,之前我们在写ListView的Adapter时需要自定义ViewHolder来提升ListView速度。使用RecyclerView的时候必须要设置LayoutManager,它会通知系统以什么样的布局来展示RecyclerView,目前系统提供了2种LayoutManager,LinearLayoutManager和GridLayoutManager对应着线性和格子,当然了也可以自定义LayoutManager来满足各种需求
用法:布局文件中声明RecyclerView(注意:需要引入android-support-v7-recyclerview.jar)
<span style="font-size:14px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RadioGroup android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" android:checkedButton="@+id/linear_layout_rb"> <RadioButton android:id="@+id/linear_layout_rb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/linear_layout_manager"/> <RadioButton android:id="@+id/grid_layout_rb" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/grid_layout_manager"/> </RadioGroup> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout></span>
在Activity中调用如下代码
<span style="font-size:14px;">mRecyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView); //类似listview mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); //类似grdiview mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3)); mAdapter = new CustomAdapter(mDataset); // Set CustomAdapter as the adapter for RecyclerView. mRecyclerView.setAdapter(mAdapter);</span>
CustomAdapter代码如下
<span style="font-size:14px;">public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> { private static final String TAG = "CustomAdapter"; private String[] mDataSet; /** * Provide a reference to the type of views that you are using (custom ViewHolder) */ public static class ViewHolder extends RecyclerView.ViewHolder { private final TextView textView; public ViewHolder(View v) { super(v); // Define click listener for the ViewHolder's View. v.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); textView = (TextView) v.findViewById(R.id.textView); } public TextView getTextView() { return textView; } } /** * Initialize the dataset of the Adapter. * * @param dataSet String[] containing the data to populate views to be used by RecyclerView. */ public CustomAdapter(String[] dataSet) { mDataSet = dataSet; } // Create new views (invoked by the layout manager) @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { // Create a new view. View v = LayoutInflater.from(viewGroup.getContext()) .inflate(R.layout.text_row_item, viewGroup, false); return new ViewHolder(v); } // Replace the contents of a view (invoked by the layout manager) @Override public void onBindViewHolder(ViewHolder viewHolder, final int position) { // Get element from your dataset at this position and replace the contents of the view // with that element viewHolder.getTextView().setText(mDataSet[position]); viewHolder.getTextView().setPadding(0, position, 0, 0); } // Return the size of your dataset (invoked by the layout manager) @Override public int getItemCount() { return mDataSet.length; } }</span>
相关文章推荐
- android 系统目录及adb
- android 设置 EditTextView不自动获得焦点
- Android自动换行标签
- Android SwipeRefreshLayout控件
- android 博客园
- Android如何判断系统语言
- Android使用特殊权限的一种代码实现
- android从零单排之百度地图的调用
- Android拨号历程函数调用
- Android音频系统之AudioFlinger(一)
- Android编程之防止反编译的实现方法
- Android基础入门教程——10.13 传感器专题(4)——其他传感器了解
- Android图片加载神器之Fresco-圆形圆角二合一教程[Java代码实现圆形圆角效果]
- 【FastDev4Android框架开发】RecyclerView完全解析,让你从此爱上它(二十八)
- Android图片加载神器之Fresco-更灵活的设置加载特效[Java代码实现XML效果]
- Android context 文件模式
- Android项目重构的一些认识和思考
- Tesseract OCR Android
- 基于Windows Azure服务器的GCM推送——Android端集成
- Android 开发之RxJava 详解