`

android5.0之RecyclerView

阅读更多
早就听说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 5.0 RecyclerView

    在Android开发中,RecyclerView是一个非常重要的组件,尤其在Android 5.0系统中引入后,它逐渐成为替代ListView的首选视图容器。RecyclerView提供了一种更高效、更灵活的方式来展示和管理大量的数据集,适用于各种...

    android5.0下拉刷新

    在Android 5.0(Lollipop)中,Google引入了一个新的UI组件——SwipeRefreshLayout,用于实现下拉刷新的功能。这个组件的设计目标是提供一个统一的、易于使用的接口,让用户能够通过简单的滑动手势来更新应用内容,...

    Android 5.0 samples

    在Android开发领域,Android 5.0(代号Lollipop)是一个重要的里程碑版本,它引入了许多新特性、改进和优化,极大地提升了用户体验和开发者的工作效率。这个名为"Android 5.0 samples"的压缩包提供了API Level 21的...

    android 5.0 RecyclerView

    在Android开发领域,RecyclerView是Android 5.0(Lollipop)引入的一个强大的视图组件,旨在替代原有的ListView。RecyclerView提供了一种更...对于Android 5.0及更高版本的应用,RecyclerView已成为必备的工具之一。

    android 5.0新控件

    RecyclerView是Android 5.0中替换ListView的高效列表视图组件。相比于ListView,RecyclerView提供了更好的性能和更大的灵活性。它的核心特性包括: 1. **高效的视图复用**:RecyclerView采用ViewHolder模式,通过...

    Android 5.0容兼开发包

    Android 5.0,代号Lollipop,是Google在2014年发布的一个重大操作系统更新,它带来了许多新特性和改进,对于开发者而言,尤其是Android应用的兼容性开发方面,有着深远的影响。"Android 5.0容兼开发包"就是针对这个...

    recyclerview:Android5.0 RecyclerView

    Android5.0 RecyclerView reference resource 分割线 DividerItemDecoration 增加和删除动画 Summary LayoutManager去实现ListView, GridView, 横向ListView/GridView, 瀑布流 ItemDecoration 实现的原理和如何定制 ...

    Android 5.0 新组件Demo

    这个"Android 5.0 新组件Demo"是针对这些改进的一个实践示例,让我们来深入探讨其中的核心组件:RecyclerView、CardView和Palette。 1. **RecyclerView**:RecyclerView是Android 5.0引入的替代ListView的视图组件...

    android RecyclerView CardView实践

    在"android5.0 RecyclerView和CardView结合的一个小例子"中,我们将看到如何设置RecyclerView的基本结构,包括布局管理器(如LinearLayoutManager、GridLayoutManager或StaggeredGridLayoutManager)以及适配器的...

    android5.0之CardView

    在Android开发中,CardView是一个非常重要的组件,尤其在Android 5.0(Lollipop)及更高版本中,它被广泛用于创建具有阴影效果和圆角的卡片式UI设计。CardView提供了一种简单的方式来封装内容,并且可以轻松地集成到...

    Android 5.0 Music 源码

    Android 5.0 Music的用户界面设计遵循Material Design指南,源码中包含了各种UI组件的使用,如RecyclerView、Fragment、CardView等,以及手势操作的实现,如滑动切换歌曲。 8. **权限管理** 播放音乐需要访问存储...

    Android5.0新控件使用Demo

    在Android 5.0(Lollipop)版本中,Google引入了一系列新的UI控件和特效,以提升用户体验和开发者的工作效率。这些更新使得应用程序更具现代感,同时也提供了更多的自定义选项。下面将详细介绍`ToolActionBar`、`...

    AndroidSDK-5.0

    《Android SDK 5.0:在Mac系统中的安装与使用详解》 Android SDK(Software Development Kit)是Android应用开发的基础工具集,它包含了开发者需要的所有工具,如Android平台的API库、模拟器、构建工具等,以帮助...

    Android 仿36Kr.zip

    通过爬虫技术实时抓取36Kr数据 使用技术:Android5.0 (RecyclerView,CardView,SwipeRefeshLayout...),数据爬虫,原生 HTML5 混合开发,Volley,Okhttp,UIL,Fresco,EventBus,消息推送,多渠道打包,增量升级...

    Android5.0的通信录

    接下来,我们将深入探讨Android 5.0通信录的实现细节以及与之相关的知识点。 1. **Android Studio的使用** Android Studio是Google推出的官方集成开发环境(IDE),用于开发Android应用。它提供了代码编辑、调试、...

    代码实现Android 5.0的下拉刷新特效

    在Android 5.0(Lollipop)系统中,这种效果通常采用SwipeRefreshLayout控件来实现。下面将详细讲解如何通过代码实现这一功能。 首先,我们需要引入SwipeRefreshLayout控件。在XML布局文件中添加SwipeRefreshLayout...

    Android5.0 Launcher3源码

    Android 5.0 的 Launcher3 源码分析 Launcher3 是 Android 系统中默认桌面启动器的主要实现,它负责展示应用图标、小部件、快捷方式等元素,并且是用户与系统交互的重要界面。在 Android 5.0 版本中,Launcher3 ...

    一个Activity掌握Android5.0新控件

    当我们谈论"一个Activity掌握Android5.0新控件"时,这通常意味着开发者需要熟悉在Android Lollipop(5.0)版本中引入的一些重要UI组件,以便更好地构建用户界面。以下是这些新控件的详细介绍: 1. RecyclerView: ...

    Android5.0新控件CardView的Demo和兼容包

    Android 5.0(Lollipop)引入了一个名为`CardView`的重要组件,它是Material Design设计规范的一部分。`CardView`提供了一种简单的方式来封装内容,并将其呈现为一个有阴影效果的卡片样式,使得信息层次分明,视觉...

Global site tag (gtag.js) - Google Analytics