哈喽~ 今天整理了 Android 开发的核心知识点!主要围绕瀑布流布局、卡片视图、滑动容器对比 和RecyclerView 点击事件展开,都是实际开发中高频用到的技能,赶紧码住呀✨
一、🌟 StaggeredGridLayoutManager:瀑布流布局神器
StaggeredGridLayoutManager 是 RecyclerView 的特殊布局管理器,继承自 LinearLayoutManager,和传统 GridLayoutManager 最大的区别是 ------支持 Item 高度 / 宽度不一致,轻松实现瀑布流效果!📊
适用场景
图片展示、新闻摘要、商品列表
核心用法
1、构造函数:创建实例时指定列数(垂直布局)/ 行数(水平布局)+ 方向
java
// 垂直布局,3列
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, RecyclerView.VERTICAL);
动态调整列数 / 行数 :setSpanCount(int spanCount),调用后 RecyclerView 会重新布局
切换布局方向 :setOrientation(int orientation),支持垂直 / 水平切换
反向布局 :setReverseLayout(boolean reverseLayout),true 时垂直从下往上、水平从右往左排列(默认 false)
布局参数小技巧
StaggeredGridLayoutManager.LayoutParams 支持特殊需求:
- 跨列 / 跨行显示 :设置
isFullspan=true,Item 会占据整行 / 整列,超适合做头部布局(Header)📌 - 自定义参数 :通过
setLayoutParams设置 Item 宽高、跨列属性等
二、🃏 CardView:Material Design 风格卡片组件
CardView 是 Material Design 的核心组件,AndroidX 库提供支持,兼容旧版本,用来做卡片式展示超美观!
核心特点
- 圆角:可设置圆角半径,边缘更柔和
- 阴影:通过
cardElevation属性添加阴影,增强立体感 - 背景色:
cardBackgroundColor自定义,适配应用主题 - 内边距:
cardContentPadding控制内容与卡片边缘间距 - 可点击:继承自 FrameLayout,支持点击 / 聚焦事件,还能嵌套任意视图
- 兼容性好:依托 AndroidX,老版本系统也能正常使用
三、📜 ViewPager2 vs ViewPager:滑动容器对比
ViewPager2 是 ViewPager 的升级版本,功能更强大,交互更流畅!
| 特性 | ViewPager2 | ViewPager |
|---|---|---|
| 滑动方向 | 📶 支持垂直 + 水平 | 📐 仅支持水平 |
| 性能 & 动画 | 🚀 基于 RecyclerView,性能更优 | 🐢 性能较弱,动画效果有限 |
| 适配器 | 🧩 用 RecyclerView.Adapter,简单易用 | 🧩 需用 PagerAdapter,相对复杂 |
| 动态更新 | ✅ 支持动态更新页面内容 | ❌ 动态更新受限 |
| Fragment 支持 | ✅ 直接支持 Fragment 作为页面 | ❌ 需通过专用适配器适配 |
| 触摸交互 | 🖐️ 触摸功能较少 | 🖐️ 更多手势交互支持 |
四、🖱️ RecyclerView 点击事件:实现
RecyclerView 专注于数据展示和复用,不直接处理点击事件,需要我们手动实现,步骤超简单!
实现步骤(附代码)
1、定义点击事件接口:在 Adapter 中声明
java
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
2、 持有接口实例:在 Adapter 中定义并提供设置方法
java
private OnItemClickListener mListener;
// 设置监听器的方法
public void setOnItemClickListener(OnItemClickListener listener) {
this.mListener = listener;
}
3、在 ViewHolder 中设置监听 :在onBindViewHolder或 ViewHolder 构造器中
java
@Override
public void onBindViewHolder(final ViewHolder holder, int position) {
// 绑定数据...
// 给Item根视图设置点击监听
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mListener != null) {
mListener.onItemClick(holder.itemView, position);
}
}
});
}
4、在 Activity/Fragment 中使用:处理点击逻辑
java
adapter.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
// 比如弹出提示
Toast.makeText(context, "点击了第" + position + "项", Toast.LENGTH_SHORT).show();
}
});
五、📌 小总结
RecyclerView 点击事件四步走:定义接口→持有实例→设置监听→处理逻辑