一個橫向滑動層疊布局,左滑可以一個個層疊起來,右滑一個個平鋪顯示,效果圖如下
效果圖

效果圖
HorizontalPileLayout
使用方法:
1.添加依賴
implementation 'com.github.DalesDawson:HorizontalPileLayout:1.0.3' //修改了調(diào)用notifyDataSetChanged()方法刷新第一個item不顯示問題
2.在布局文件xml中使用
<com.daledawson.pilelayout.HorizontalPileLayout
android:id="@+id/pileLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:paddingTop="5dp"
android:paddingBottom="5dp"
pile:displayCount="1.8"
pile:interval="10dp"
pile:scaleStep="0.32"
pile:sizeRatio="1.12" />
參數(shù)說明
| 變量名 | 類型 | 描述 |
|---|---|---|
| displayCount | float | 需要顯示出的個數(shù)(可以是小數(shù)) |
| interval | dimension | 每一個item之間的間隔 |
| scaleStep | float | 相對于原本放大的倍數(shù)(0.3就是放大到原本的1.3倍) |
| sizeRatio | float | 高寬比(可以使用高除以寬得出) |
3.在代碼中設(shè)置adapter
pileLayout.setAdapter(adapter);//只需要調(diào)用一次,多次調(diào)用會出錯
pileLayout.notifyDataSetChanged(); //刷新數(shù)據(jù)調(diào)用此方法
HorizontalPileLayout.Adapter adapter = new HorizontalPileLayout.Adapter() {
@Override
public int getLayoutId() {
return R.layout.item_layout;
}
@Override
public void bindView(View view, int position) {
ViewHolder viewHolder = (ViewHolder) view.getTag();
if (viewHolder == null) {
viewHolder = new ViewHolder();
viewHolder.imageView = (RoundedImageView) view.findViewById(R.id.imageView);
view.setTag(viewHolder);
}
Picasso.get().load(dataList.get(position)).into(viewHolder.imageView);
}
@Override
public int getItemCount() {
return dataList.size();
}
@Override
public void displaying(int position) {
}
@Override
public void onItemClick(View view, int position) {
super.onItemClick(view, position);
}
};
class ViewHolder {
RoundedImageView imageView;
}
Demo apk