Android近两年推出了许多新的Support,里面不缺一些实用流行的控件,一些新的控件都是遵循谷歌的材料设计,以下一一说明:
源代码地址: https://github.com/smallnew/android-support-demo
一、RecycleView
新suuport里最实用的控件,完全可以取代ListView和GridView,主要有这几点特性:1、RecycleView自带ViewHodler接口规范,比ListView更加规范,人性化,写起来更带感!!
2、RecycleView可以通过RecyclerView.LayoutManager设置为网格显示、瀑布流显示、横向显示
3、官方号称效率更高,速度更快
4、自带删除、添加item的动画
5、通过SwipeRefreshLayout可以实现下拉刷新
编写Adapter:
<span style="font-size:14px;"> public class RecAdapter extends RecyclerView.Adapter<RecAdapter.RecViewHodler> {
List<String> data = new ArrayList<String>();
int[] colors = new int[]{};
public RecAdapter(List<String> list) {
data = list;
}
//RecyclerView规范ViewHolder生成函数
@Override
public RecViewHodler onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(getActivity()).inflate(R.layout.item_recyle, null);
TextView tv = (TextView) view.findViewById(R.id.tv_recyle_test);
tv.setTextColor(Color.BLACK);
return new RecViewHodler(view);
}
@Override
public int getItemCount() {
return data.size();
}
//RecyclerView规范ViewHolder逻辑函数
@Override
public void onBindViewHolder(RecViewHodler recViewHodler, int i) {
recViewHodler.mTv.setText(data.get(i));
}
//继承于RecyclerView规范的ViewHolder
public class RecViewHodler extends RecyclerView.ViewHolder {
TextView mTv;
public RecViewHodler(View itemView) {
super(itemView);
mTv = (TextView) itemView.findViewById(R.id.tv_recyle_test);
}
}
}</span>
初始化RecycleView:
<span style="font-size:14px;"> recyclerView = (RecyclerView) layout.findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);//一个优化项,RecyclerView是否因Adapter变化而变化
mLayoutManager = new LinearLayoutManager(getActivity());//此处为单行显示item,也可为网格GridLayoutManager
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setAdapter(mAdapter);//适配器</span>
<span style="font-size:14px;"> data.remove(0);
mAdapter.notifyItemRemoved(0);
data.add(index, "YOU ADD");
mAdapter.notifyItemInserted(index);</span>
二、 DrawerLayout 和NavigationView
侧边菜单组合,新的Android studio就有模板,一般一起用
三、CoordinatorLayout AppBarLayout Toolbar
增强型ActionBar,有根据滚动情况拉伸收缩的头部布局,新的Android studio也有模板
四、TabLayout
跟以前默认的Tab最大的区别在于:滑动的时候,tab的下划线实时跟着滑动,而不是到了一个阀值才开始滑动
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="35dp"
android:background="?attr/colorPrimaryDark"></android.support.design.widget.TabLayout>
mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(0)));
mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(1)));
mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(2)));
mTabLayout.addTab(mTabLayout.newTab().setText(titles.get(3)));
mViewPager.setAdapter(adapter);
//important
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setTabsFromPagerAdapter(adapter);
五、PercentRelativeLayout PercentFrameLayout
百分比布局,PercentRelativeLayout 继承于RelativeLayout,PercentFrameLayout继承于FrameLayout,主要添加了百分比的参数,你可以按照高或者宽的比例来定义子控件大小,有大牛也实现了PercentLinerLayout
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_alignParentTop="true"
android:background="#5182bb"
app:layout_marginLeftPercent="15%"
app:layout_heightPercent="15%"
app:layout_widthPercent="30%" />
六、 其他
FloatingActionButton 浮动按钮
Palette 调色板
TextInputLayou 新的输入框交互
Snackbar 类似Toast,有action,不会一直弹
这几个实际项目比较少用的控件,使用也比较简单