Open mengming opened 8 years ago
最近重构天气预报,试了一下material design的控件。嗯比原生好看多了。 首先在AS里新建工程,可以直接新建一个带有其他控件的项目,当然这样代码会多一点,你需要去了解一下它的初始架构。 我这里分享的是一个带有抽屉的activity,其中NavigationView,Toolbar,FloatingActionButton,DrawerLayout的使用我就不多说了。 这里讲一下在这个应用中加入下拉刷新列表的方法。 以前使用下拉刷新的话一般使用开源库,但是google推出了SwipeRefreshLayout和RecyclerView,可以完美替代开源库的作用,而且也有动画效果,很推荐使用。 首先在xml里加入控件嵌套使用就可以了。
<android.support.v4.widget.SwipeRefreshLayout android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/swipe"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recycler"/> </android.support.v4.widget.SwipeRefreshLayout>
接着在java中声明控件,要注意的是RecyclerView需要配置一个LayoutManager。
SwipeRefreshLayout swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe); swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { } }); RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(new RecyclerAdapter());
SwipeRefreshLayout的使用比较简单,就是在onRefresh里写刷新的操作就可以的了。主要介绍一下RecyclerView的使用。
整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。 你想要控制其显示的方式,请通过布局管理器LayoutManager 你想要控制Item间的间隔(可绘制),请通过ItemDecoration 你想要控制Item增删的动画,请通过ItemAnimator (复制粘贴了一波。。。)
目前SDK中提供了三种自带的LayoutManager,能够实现三种不同布局: LinearLayoutManager 线性管理器,支持横向、纵向。 GridLayoutManager 网格布局管理器 StaggeredGridLayoutManager 瀑布流式布局管理器
ItemDecoration可以绘制分割线,当然你也可以添加其他东西作为间隔,提高了我们的设计自由度。
ItemAnimator可以设置增删的动画效果,而且也有默认动画,还不错。
接下来是Adapter了。RecyclerView自带Adapter,引入了ViewHolder提高性能。话不多说看代码
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> { public String[] datas = null; public RecyclerAdapter(String[] datas) { this.datas = datas; } //创建新View,被LayoutManager所调用 @Override public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) { View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item,viewGroup,false); ViewHolder vh = new ViewHolder(view); return vh; } //将数据与界面进行绑定的操作 @Override public void onBindViewHolder(ViewHolder viewHolder, int position) { viewHolder.mTextView.setText(datas[position]); } //获取数据的数量 @Override public int getItemCount() { return datas.length; } //自定义的ViewHolder,持有每个Item的的所有界面元素 public static class ViewHolder extends RecyclerView.ViewHolder { public TextView mTextView; public ViewHolder(View view){ super(view); mTextView = (TextView) view.findViewById(R.id.text); } } }
这就是最简单的使用方法了,创建一个ViewHolder,包含了你的item里面的控件,onCreateViewHolder就在绘制时创建ViewHolder,而onBindViewHolder是用来绑定数据的。 而RecyclerView还有一个特点就是可以很方便的使用多种布局作为item。通过getItemViewType方法,使每个位置的item返回不同的type,在onCreateViewHolder中通过不同的type创建不同的ViewHolder,就可以实现显示不同的布局了。 推荐两篇RecyclerView的文章 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html http://blog.csdn.net/lmj623565791/article/details/45059587 这两个控件还有很多使用技巧,后面慢慢更新吧。
最近重构天气预报,试了一下material design的控件。嗯比原生好看多了。 首先在AS里新建工程,可以直接新建一个带有其他控件的项目,当然这样代码会多一点,你需要去了解一下它的初始架构。 我这里分享的是一个带有抽屉的activity,其中NavigationView,Toolbar,FloatingActionButton,DrawerLayout的使用我就不多说了。 这里讲一下在这个应用中加入下拉刷新列表的方法。 以前使用下拉刷新的话一般使用开源库,但是google推出了SwipeRefreshLayout和RecyclerView,可以完美替代开源库的作用,而且也有动画效果,很推荐使用。 首先在xml里加入控件嵌套使用就可以了。
接着在java中声明控件,要注意的是RecyclerView需要配置一个LayoutManager。
SwipeRefreshLayout的使用比较简单,就是在onRefresh里写刷新的操作就可以的了。主要介绍一下RecyclerView的使用。
整体上看RecyclerView架构,提供了一种插拔式的体验,高度的解耦,异常的灵活,通过设置它提供的不同LayoutManager,ItemDecoration , ItemAnimator实现令人瞠目的效果。 你想要控制其显示的方式,请通过布局管理器LayoutManager 你想要控制Item间的间隔(可绘制),请通过ItemDecoration 你想要控制Item增删的动画,请通过ItemAnimator (复制粘贴了一波。。。)
目前SDK中提供了三种自带的LayoutManager,能够实现三种不同布局: LinearLayoutManager 线性管理器,支持横向、纵向。 GridLayoutManager 网格布局管理器 StaggeredGridLayoutManager 瀑布流式布局管理器
ItemDecoration可以绘制分割线,当然你也可以添加其他东西作为间隔,提高了我们的设计自由度。
ItemAnimator可以设置增删的动画效果,而且也有默认动画,还不错。
接下来是Adapter了。RecyclerView自带Adapter,引入了ViewHolder提高性能。话不多说看代码
这就是最简单的使用方法了,创建一个ViewHolder,包含了你的item里面的控件,onCreateViewHolder就在绘制时创建ViewHolder,而onBindViewHolder是用来绑定数据的。 而RecyclerView还有一个特点就是可以很方便的使用多种布局作为item。通过getItemViewType方法,使每个位置的item返回不同的type,在onCreateViewHolder中通过不同的type创建不同的ViewHolder,就可以实现显示不同的布局了。 推荐两篇RecyclerView的文章 http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1118/2004.html http://blog.csdn.net/lmj623565791/article/details/45059587 这两个控件还有很多使用技巧,后面慢慢更新吧。