早就听说RecyclerView有多少多少XX
但是直到今天才开始尝试使用它,惭愧惭愧
包括:
1,分割线装饰(DividerGridItemDecoration & DividerItemDecoration)
2,自定义动画(ScaleInOutItemAnimator等)
3,Item点击和长按事件
4,动态添加删除Item
5,自定义ActionBar风格
注意:瀑布流效果需要Item的高度都不一致,这样才能看出来。
动态添加删除Item时分割线会有点小问题,如果很介意,建议不要使用装饰(Decoration)来实现分割线,而是使用Item的padding或margin
很简单直接上代码
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.widget.effect.DividerGridItemDecoration;
/**
* http://blog.csdn.net/lmj623565791/article/details/45059587
* @author Administrator
*
*/
public class MainActivity extends Activity {
private Context context;
private MyAdapter adapter;
private RecyclerView recyclerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
context=this;
initViews();
}
public void initViews(){
recyclerView = (RecyclerView) findViewById(R.id.recyclerview);
recyclerView.addItemDecoration(new DividerGridItemDecoration(this));
recyclerView.setItemAnimator(new DefaultItemAnimator());//动画effect
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(manager);
final ArrayList<KeyValue> list=new ArrayList<KeyValue>();
for (int i = 0; i < 100; i++){
list.add(new KeyValue("key"+i, "value"+i));
}
adapter = new MyAdapter(list);
adapter.setOnItemClickLitener(new MyAdapter.OnItemClickLitener() {
@Override
public void onItemClick(View view, int position) {
// TODO Auto-generated method stub
adapter.removeData(position);
}
});
// 设置Adapter
recyclerView.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case R.id.action_add:
adapter.addData(1);
break;
case R.id.action_delete:
adapter.removeData(1);
break;
case R.id.action_0:
LinearLayoutManager manager0 = new LinearLayoutManager(this);
manager0.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(manager0);
break;
case R.id.action_1:
LinearLayoutManager manager1 = new LinearLayoutManager(this);
manager1.setOrientation(LinearLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager1);
break;
case R.id.action_2:
GridLayoutManager manager2 = new GridLayoutManager(this,4);
recyclerView.setLayoutManager(manager2);
break;
case R.id.action_3:
GridLayoutManager manager3 = new GridLayoutManager(this,3);
manager3.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return (3 - position % 3);
}
});
recyclerView.setLayoutManager(manager3);
break;
case R.id.action_4:
StaggeredGridLayoutManager manager4 = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager4);
break;
case R.id.action_5:
StaggeredGridLayoutManager manager5 = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.HORIZONTAL);
recyclerView.setLayoutManager(manager5);
break;
}
return true;
}
}
具体看附件
关于Recycleview使用的一些心得
http://blog.csdn.net/dywailly/article/details/47169355
RecyclerView自定义LayoutManager,打造不规则布局
http://blog.csdn.net/qibin0506/article/details/52676670
FlowLayoutManager
https://github.com/xiaofeng-han/AndroidLibs/tree/master/flowlayoutmanager
https://github.com/danylovolokh/LondonEyeLayoutManager
SnappyLinearLayoutManager
https://android-arsenal.com/details/1/3909
https://github.com/xiaofeng-han/AndroidLibs/tree/master/flowlayoutmanager
https://github.com/Cleveroad/FanLayoutManager
https://github.com/BelooS/ChipsLayoutManager
https://github.com/L4Digital/FastScroll
http://www.jcodecraeer.com/a/opensource/2017/0117/7048.html
http://www.jcodecraeer.com/a/opensource/2017/0117/7048.html
- 大小: 165.7 KB
分享到:
相关推荐
在Android开发中,RecyclerView是一个非常重要的组件,尤其在Android 5.0系统中引入后,它逐渐成为替代ListView的首选视图容器。RecyclerView提供了一种更高效、更灵活的方式来展示和管理大量的数据集,适用于各种...
在Android 5.0(Lollipop)中,Google引入了一个新的UI组件——SwipeRefreshLayout,用于实现下拉刷新的功能。这个组件的设计目标是提供一个统一的、易于使用的接口,让用户能够通过简单的滑动手势来更新应用内容,...
在Android开发领域,Android 5.0(代号Lollipop)是一个重要的里程碑版本,它引入了许多新特性、改进和优化,极大地提升了用户体验和开发者的工作效率。这个名为"Android 5.0 samples"的压缩包提供了API Level 21的...
在Android开发领域,RecyclerView是Android 5.0(Lollipop)引入的一个强大的视图组件,旨在替代原有的ListView。RecyclerView提供了一种更...对于Android 5.0及更高版本的应用,RecyclerView已成为必备的工具之一。
RecyclerView是Android 5.0中替换ListView的高效列表视图组件。相比于ListView,RecyclerView提供了更好的性能和更大的灵活性。它的核心特性包括: 1. **高效的视图复用**:RecyclerView采用ViewHolder模式,通过...
Android 5.0,代号Lollipop,是Google在2014年发布的一个重大操作系统更新,它带来了许多新特性和改进,对于开发者而言,尤其是Android应用的兼容性开发方面,有着深远的影响。"Android 5.0容兼开发包"就是针对这个...
Android5.0 RecyclerView reference resource 分割线 DividerItemDecoration 增加和删除动画 Summary LayoutManager去实现ListView, GridView, 横向ListView/GridView, 瀑布流 ItemDecoration 实现的原理和如何定制 ...
这个"Android 5.0 新组件Demo"是针对这些改进的一个实践示例,让我们来深入探讨其中的核心组件:RecyclerView、CardView和Palette。 1. **RecyclerView**:RecyclerView是Android 5.0引入的替代ListView的视图组件...
在"android5.0 RecyclerView和CardView结合的一个小例子"中,我们将看到如何设置RecyclerView的基本结构,包括布局管理器(如LinearLayoutManager、GridLayoutManager或StaggeredGridLayoutManager)以及适配器的...
在Android开发中,CardView是一个非常重要的组件,尤其在Android 5.0(Lollipop)及更高版本中,它被广泛用于创建具有阴影效果和圆角的卡片式UI设计。CardView提供了一种简单的方式来封装内容,并且可以轻松地集成到...
Android 5.0 Music的用户界面设计遵循Material Design指南,源码中包含了各种UI组件的使用,如RecyclerView、Fragment、CardView等,以及手势操作的实现,如滑动切换歌曲。 8. **权限管理** 播放音乐需要访问存储...
在Android 5.0(Lollipop)版本中,Google引入了一系列新的UI控件和特效,以提升用户体验和开发者的工作效率。这些更新使得应用程序更具现代感,同时也提供了更多的自定义选项。下面将详细介绍`ToolActionBar`、`...
《Android SDK 5.0:在Mac系统中的安装与使用详解》 Android SDK(Software Development Kit)是Android应用开发的基础工具集,它包含了开发者需要的所有工具,如Android平台的API库、模拟器、构建工具等,以帮助...
通过爬虫技术实时抓取36Kr数据 使用技术:Android5.0 (RecyclerView,CardView,SwipeRefeshLayout...),数据爬虫,原生 HTML5 混合开发,Volley,Okhttp,UIL,Fresco,EventBus,消息推送,多渠道打包,增量升级...
接下来,我们将深入探讨Android 5.0通信录的实现细节以及与之相关的知识点。 1. **Android Studio的使用** Android Studio是Google推出的官方集成开发环境(IDE),用于开发Android应用。它提供了代码编辑、调试、...
在Android 5.0(Lollipop)系统中,这种效果通常采用SwipeRefreshLayout控件来实现。下面将详细讲解如何通过代码实现这一功能。 首先,我们需要引入SwipeRefreshLayout控件。在XML布局文件中添加SwipeRefreshLayout...
Android 5.0 的 Launcher3 源码分析 Launcher3 是 Android 系统中默认桌面启动器的主要实现,它负责展示应用图标、小部件、快捷方式等元素,并且是用户与系统交互的重要界面。在 Android 5.0 版本中,Launcher3 ...
当我们谈论"一个Activity掌握Android5.0新控件"时,这通常意味着开发者需要熟悉在Android Lollipop(5.0)版本中引入的一些重要UI组件,以便更好地构建用户界面。以下是这些新控件的详细介绍: 1. RecyclerView: ...
Android 5.0(Lollipop)引入了一个名为`CardView`的重要组件,它是Material Design设计规范的一部分。`CardView`提供了一种简单的方式来封装内容,并将其呈现为一个有阴影效果的卡片样式,使得信息层次分明,视觉...