Android 控件使用教程(二)—— RecyclerView 展示图片
来源:互联网 发布:石头剪刀布 网络歌手 编辑:程序博客网 时间:2024/06/05 18:44
简介
在上一篇博文中,介绍了大家已经很熟悉的布局控件ListView,在这篇文章中,我将使用比较新、功能也更强大的RecyclerView.
RecyclerView
首先,要用这个控件,你需要在gradle文件中添加包的引用(配合官方CardView使用)
compile 'com.android.support:cardview-v7:23.0.1' compile 'com.android.support:recyclerview-v7:23.0.1'
在actvity_recyclerview.xml文件中定义布局:
<android.support.v7.widget.RecyclerView android:id="@+id/rv_recycleview" android:layout_width="match_parent" android:layout_height="match_parent" android:clipToPadding="false" android:padding="2dp" android:scrollbarStyle="outsideOverlay" android:scrollbars="vertical"/>
和ListView文章中类似的代码声明:
@Bind(R.id.rv_recycleview) RecyclerView rv_recyclerview; ButterKnife.bind(this);
对于RecyclerView需要进行LayoutManager的配置,这个是和ListView一样的线性显示:
rv_recyclerview.setLayoutManager(new LinearLayoutManager(this));//这里用线性显示 类似于listview
获取数据的方法参考上篇文章ListView,或者直接查看我的开源代码库,在此不再赘述。下面介绍RecyclerView的自定义Adapter.
public class NormalRecyclerViewAdapter extends RecyclerView.Adapter<NormalRecyclerViewAdapter.NormalImageHolder> { private final LayoutInflater mLayoutInflater; private final Context mContext; private List<String> list; public NormalRecyclerViewAdapter(Context context, List<String> urls) { this.list = urls; this.mContext = context; mLayoutInflater = LayoutInflater.from(context); } @Override public NormalImageHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new NormalImageHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false)); } @Override public void onBindViewHolder(NormalImageHolder holder, int position) { Picasso.with(mContext) .load(list.get(position)) .into(holder.mPicture); } @Override public int getItemCount() { return list.size(); } public static class NormalImageHolder extends RecyclerView.ViewHolder { @Bind(R.id.picture) ImageView mPicture; NormalImageHolder(View view) { super(view); ButterKnife.bind(this, view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.d("NormalTextViewHolder", "onClick--> position = " + getPosition()); } }); } } }
这是效果:
RecyclerView很方便的更改样式。这是设置成两个竖列的样式代码:
rv_recyclerview.setLayoutManager(new GridLayoutManager(this, 2));
图片展示不紧凑是因为宽和高的问题,在item_image.xml配置文件中修改宽和高如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="2dp" android:foreground="?selectableItemBackground"> <ImageView android:id="@+id/picture" android:layout_width="match_parent" android:layout_height="200dp" android:cropToPadding="false" android:scaleType="centerCrop" tools:ignore="ContentDescription" tools:src="@color/primary_light"/> </FrameLayout>
这样就可以比较好的效果:
同样可以很简单实现瀑布流:
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));//这里用线性宫格显示 类似于瀑布流
此时的item_image.xml为:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="2dp" android:foreground="?selectableItemBackground"> <ImageView android:id="@+id/picture" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerCrop" tools:ignore="ContentDescription" tools:src="@color/primary_light"/> </FrameLayout>
结果:
简单到很神奇。
下一篇将讲解九宫格图片布局NineGridImageView.
0 1
- Android 控件使用教程(二)—— RecyclerView 展示图片
- Android 控件使用教程(一)—— ListView 展示图片
- Android 控件使用教程(三)—— NineGridImageView 九宫格展示图片
- Android Kotlin(二)—— Kotlin与Retrofit进行网络请求RecyclerView展示图片列表
- Android RecyclerView 梦幻般的控件 使用解析(二)
- Android控件—RecyclerView
- android常用控件RecyclerView(三) RecyclerView的使用
- Android使用OKHTTP网络框架请求数据,RecyclerView结合Glide展示图片,瀑布流布局样式
- IOS-—UICollectionView使用综述(二 )(基础篇--画廊展示图片,瀑布流展示图片)
- Android教程(二)--基本控件TextView的使用
- Android RecyclerView使用详解(二)
- Android----------RecyclerView数据展示
- Android:NineGridLayout — 仿微信朋友圈和QQ空间的九宫格图片展示自定义控件
- Android Gallery画廊 图片展示控件
- GifView:Android动画GIF图片展示控件
- Android的v7包中的新控件——(二)RecyclerView(超级 listview,传说会代替listview)
- android中RecyclerView的简单使用(二)——分割线
- Android RecyclerView的使用(二)——添加分割线
- Swift的一些基本属性5 (for循环)
- Android Studio 小技巧合集
- 欢迎使用CSDN-markdown编辑器test
- Kindeditor上传本地图片成功后不回显,弹出层也不关闭,解决办法
- 使用Hierarchy Viewer进行UI性能优化
- Android 控件使用教程(二)—— RecyclerView 展示图片
- Android工程师学RxJava(二):进阶
- Eclipse的web.xml注解问题
- lazy懒加载(延迟加载)UITableView
- zsc1567: 烦恼的小明&hdu 1007(分治)
- python (模块、包)搜索与导入的问题
- Eclipse 各文件讲解说明
- 学习Arcgis for android 日志
- Android Looper和Handler小结