Android-->RecyclerView的上手教程(模仿画廊效果)
2015-06-10 16:44
766 查看
效果图:
考虑到图片体积, 上一个和下一个的按钮,没有截图出来.
RecyclerView使用教程
1:创建RecyclerView,也可以在布局中创建
2:创建LinearLayoutManager对象,这个对象可以设置 垂直和水平滚动的方向
3:创建一个RecyclerView.ViewHolder对象,用来保存每个Item的View对象
4:创建一个RecyclerView.Adapter对象
5:最后一步:
源代码下载: http://download.csdn.net/detail/angcyo/8792845
源码:
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.
考虑到图片体积, 上一个和下一个的按钮,没有截图出来.
RecyclerView使用教程
1:创建RecyclerView,也可以在布局中创建
recyclerView = new RecyclerView(this);
2:创建LinearLayoutManager对象,这个对象可以设置 垂直和水平滚动的方向
manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.HORIZONTAL);//设置方向为横向
3:创建一个RecyclerView.ViewHolder对象,用来保存每个Item的View对象
public final class MyViewHolder extends RecyclerView.ViewHolder { public ImageView img;//我这里只有一张图片 public MyViewHolder(View itemView) { img = (ImageView) itemView; } }
4:创建一个RecyclerView.Adapter对象
public class MyAdapter extends RecyclerView.Adapter<ViewHolder> { @Override public int getItemCount() {//返回item的数量 return imgs.length; } @Override public void onBindViewHolder(//这里设置Item中View的值 android.support.v7.widget.RecyclerView.ViewHolder arg0, int arg1) { ((MyViewHolder) arg0).img.setImageResource(imgs[arg1]); } @Override public android.support.v7.widget.RecyclerView.ViewHolder onCreateViewHolder( ViewGroup arg0, int arg1) {//创建Item的View,并交给ViewHolder管理 ImageView img = new ImageView(MainActivity.this); img.setLayoutParams(new LayoutParams(getWidth(), 400)); return new MyViewHolder(img); } }
5:最后一步:
adapter = new MyAdapter(); recyclerView.setLayoutManager(manager);//关联布局管理,水平方向或者垂直方向 recyclerView.setAdapter(adapter);//关联数据,需要展示的数据
源代码下载: http://download.csdn.net/detail/angcyo/8792845
源码:
public class MainActivity extends ActionBarActivity { RecyclerView recyclerView; LinearLayoutManager manager; RecyclerView.Adapter adapter; RelativeLayout rootView; int[] imgs = new int[] { R.drawable.dvd_decrypter, R.drawable.eac, R.drawable.elo, R.drawable.norton_alt, R.drawable.elo_alt2, R.drawable.elster_formular, R.drawable.eset_endpoint_security }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rootView = (RelativeLayout) findViewById(R.id.root); recyclerView = new RecyclerView(this); recyclerView.setHasFixedSize(true); manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.HORIZONTAL); adapter = new MyAdapter(); recyclerView.setLayoutManager(manager); recyclerView.setAdapter(adapter); recyclerView.setBackgroundColor(Color.parseColor("#3E3E3E")); RelativeLayout.LayoutParams params = new LayoutParams( LayoutParams.MATCH_PARENT, 400); rootView.addView(recyclerView, params); recyclerView.addOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); if (newState == RecyclerView.SCROLL_STATE_IDLE) { int width = getWidth() / 2; // 图片的一半宽 int offset = recyclerView.computeHorizontalScrollOffset() % getWidth() > width ? getWidth() - recyclerView.computeHorizontalScrollOffset() % getWidth() : -recyclerView .computeHorizontalScrollOffset() % getWidth(); recyclerView.smoothScrollBy(offset, 0); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); // Log.e(dx + "", dy + ""); } }); } public final class MyViewHolder extends RecyclerView.ViewHolder { public ImageView img; public MyViewHolder(View itemView) { super(itemView); img = (ImageView) itemView; } } public class MyAdapter extends RecyclerView.Adapter<ViewHolder> { @Override public int getItemCount() { return imgs.length; } @Override public void onBindViewHolder( android.support.v7.widget.RecyclerView.ViewHolder arg0, int arg1) { ((MyViewHolder) arg0).img.setImageResource(imgs[arg1]); } @Override public android.support.v7.widget.RecyclerView.ViewHolder onCreateViewHolder( ViewGroup arg0, int arg1) { ImageView img = new ImageView(MainActivity.this); img.setLayoutParams(new LayoutParams(getWidth(), 400)); return new MyViewHolder(img); } } public int getWidth() { Log.e("width", recyclerView.getMeasuredWidth() / 3 + ""); return recyclerView.getMeasuredWidth() / 3; } public void prev(View view) { recyclerView.smoothScrollBy(-getWidth(), 0); } public void next(View view) { recyclerView.smoothScrollBy(getWidth(), 0); } }
至此: 文章就结束了,如有疑问: QQ群:274306954 欢迎您的加入.
相关文章推荐
- Android基础教程(六)之----多选项CheckBox的综合应用
- Android Drawable 那些不为人知的高效用法
- Android基础教程(五)之-----Menu功能菜单设计
- android退出整个应用程序
- Android中的“再按一次返回键退出程序”de实现
- Android基础教程(四)之-----取得手机屏幕大小DisplayMetrics的应用
- Android 下拉刷新框架实现
- Android基础教程(三)之-----简单的Button事件响应综合提示控件Toast的应用
- 将Eclipse代码导入到Android Studio的两种方式
- Android基础教程(二)之五大布局对象---FrameLayout,LinearLayout ,AbsoluteLayout,RelativeLayout,TableLayout.
- android多个fragment返回键层层返回
- 打Android渠道包简易脚本
- android fragment页面切换GridView数据不能刷新的问题
- Android--第二天(项目安装启动,电话拨号器,用户通知,短信发送器,数据存储与访问)
- Android Volley完全解析
- android上传图片至服务器
- Android & iOS设计尺寸规范
- Android 属性动画(Property Animation) 完全解析 (上)
- android开发问题记录0610
- Android 学习笔记多媒体技术之 Drawable类+Tween(补间动画)+Frame(帧动画)