一個(gè)橫向滑動(dòng)層疊布局出嘹,左滑可以一個(gè)個(gè)層疊起來(lái)席楚,右滑一個(gè)個(gè)平鋪顯示,效果圖如下
HorizontalPileLayout
使用方法:
1.添加依賴
implementation 'com.github.DalesDawson:HorizontalPileLayout:1.0.3' //修改了調(diào)用notifyDataSetChanged()方法刷新第一個(gè)item不顯示問(wèn)題
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ù)說(shuō)明
變量名 | 類(lèi)型 | 描述 |
---|---|---|
displayCount | float | 需要顯示出的個(gè)數(shù)(可以是小數(shù)) |
interval | dimension | 每一個(gè)item之間的間隔 |
scaleStep | float | 相對(duì)于原本放大的倍數(shù)(0.3就是放大到原本的1.3倍) |
sizeRatio | float | 高寬比(可以使用高除以寬得出) |
3.在代碼中設(shè)置adapter
pileLayout.setAdapter(adapter);//只需要調(diào)用一次税稼,多次調(diào)用會(huì)出錯(cuò)
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