android5.0之RecyclerView

来源:互联网 发布:云镜安卓限制安装软件 编辑:程序博客网 时间:2024/04/30 21:02
早就听说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() {@Overridepublic void onItemClick(View view, int position) {// TODO Auto-generated method stubadapter.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
原创粉丝点击