android RecyclerView 实现瀑布流带图库浏览效果

转载请声明出处http://blog.csdn.net/simon_yuyu/article/details/50924870

这是本人第一次写博客,不好的地方,望各位大神多多指教!
好了进入正题,平常大家想实现瀑布流的时候,第一想到的就是重写控件,来达到瀑布流效果,自从了解到了 RecyclerView 后,才发现实现这个效果就需要一行代码就可以搞定,是不是很惊讶,好了,先上代码来验证一下!`package com.example.administrator.stageredgriddemo;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Rect;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;

public class MainActivity extends Activity {

private RecyclerView recyclerView;
private ReCycAdapter mAdapter;

private ArrayList<String> mDatas;


String[] urls = {"http://img4.duitang.com/uploads/item/201511/02/20151102130410_Mds2x.thumb.700_0.jpeg",
        "http://img5.duitang.com/uploads/item/201409/13/20140913141545_E3xtA.thumb.700_0.jpeg",
        "http://d.3987.com/yjyy_131018/001.jpg",
        "http://img4.duitang.com/uploads/item/201411/30/20141130160518_FzGfQ.jpeg"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = (RecyclerView) this.findViewById(R.id.recyclerview);

    //添加显示的图片链接
    mDatas = new ArrayList<String>();
    for (int i = 0; i < 30; i++) {
        if (i % 4 == 0) {
            mDatas.add(urls[1]);
        } else if (i % 4 == 1) {
            mDatas.add(urls[2]);
        } else if (i % 4 == 2) {
            mDatas.add(urls[3]);
        } else {
            mDatas.add(urls[0]);
        }
    }

// recyclerView.setLayoutManager(new LinearLayoutManager(this));
//设置布局为3列,垂直显示
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL);
recyclerView.setLayoutManager(manager);
//设置item的间隔
SpacesItemDecoration decoration = new SpacesItemDecoration(10);
recyclerView.addItemDecoration(decoration);
recyclerView.setAdapter(new ReCycAdapter());

}

//recyclerView适配器
class ReCycAdapter extends RecyclerView.Adapter<ReCycAdapter.MyViewHolder>{

    @Override
    public MyViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
        //创建视图
        View view = LayoutInflater.from(getApplication()).inflate(R.layout.item_info, viewGroup, false);
        MyViewHolder holder = new MyViewHolder(view);

        return holder;
    }




    @Override
    public void onBindViewHolder(MyViewHolder viewHolder, final int i) {
        //控件在这做相应的处理
        //点击当前item,查看大图
        viewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //把显示图片的链接加入到list中和当前位置,传递给查看大图界面
                Intent intent = new Intent(getApplication(), LookImage.class);
                intent.putStringArrayListExtra("lookimages", mDatas);
                intent.putExtra("lookimage_index", i);
                startActivity(intent);
            }
        });
        //加载图片
        Picasso.with(getApplication()).load(mDatas.get(i)).into(viewHolder.tv);
    }

    @Override
    public int getItemCount() {
        return mDatas.size();
    }

    //定义控件管理
    class MyViewHolder extends RecyclerView.ViewHolder {

        ImageView tv;
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
介绍:一个基于RecyclerView实现的ViewPager,支持类似于gallary的fling操作。点击上面"下载源码" 按钮,可以下载完整的demo。其中recyclerviewandroid-support中的依赖项目,RecyclerViewPager是主项目。运行效果:使用说明:继承自 RecyclerView.自定义 fling factor.自定义 paging trigger.支持 水平个垂直方向.支持 FragmentViewPager (api 12 )gradlecompile('com.lsjwzh:recyclerviewpager:1.0.2')xml:java:final RecyclerViewPager mRecyclerView = (RecyclerViewPager) this.findViewById(R.id.recyclerViewPager); LinearLayoutManager layout = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL,false);//LinearLayoutManager.HORIZONTAL 设置水平滚动 mRecyclerView.setLayoutManager(layout); //set adapter mRecyclerView.setAdapter(new MyRecyclerAdapter());static class MyRecyclerAdapter extends RecyclerView.Adapter { private List items = new ArrayList(); public MyRecyclerAdapter(){ //创建4个页面 for(int i = 1; i<5; i ){ items.add("页面" i); } } public static class ViewHolder extends RecyclerView.ViewHolder{ public ViewHolder(View itemView) { super(itemView); } } @Override public int getItemCount() { // TODO Auto-generated method stub return items.size(); } @Override public void onBindViewHolder(ViewHolder holder, int position) { String item = items.get(position); TextView msgTv = (TextView)holder.itemView.findViewById(R.id.msg); msgTv.setText(item); } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(inflate == null) inflate = (LayoutInflater) parent.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = (LinearLayout)(inflate.inflate(R.layout.item, null)); return new 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值