这个框架效果挺不错的,我在Recyclerview中使用,但是有些坑要说明下。
引用官方demo的图:
先说使用:
1.引入依赖
implementation 'com.ethanhua:skeleton:1.1.2'//动画
implementation 'io.supercharge:shimmerlayout:2.1.0'
2.直接在初始化recyclerview的时候将Skeleton注册进去
RvRecentApp = findViewById(R.id.rv_recent_app);
mRecentAdapter = new RecentappAdapter(this);
mRvRecentApp.setLayoutManager(new GridLayoutManager(this, default_recent_count) {
@Override
public boolean canScrollVertically() {
return false;
}
});
skeletonScreen = Skeleton.bind(mRvRecentApp)
.adapter(mRecentAdapter)
.load(R.layout.item_skeleton_news)
.count(5)
.shimmer(true)
.show();
3.获取到数据后再给recyclerview设置数据然后进行Skeleton的隐藏
mRecentAdapter.setRecentAppData(list_expand);
mRvRecentApp.postDelayed(new Runnable() {
@Override
public void run() {
skeletonScreen.hide();
}
}, 100);
采用了Skeleton的话是不用手动调用setAdapter方法的,第二步的时候已经设置了。注意adapter里需要手动调用刷新。
public class RecentappAdapter extends RecyclerView.Adapter<RecentappAdapter.RecentHolder> {
···
public void setRecentAppData(List<SearchEntity> list){
this.mList = list;
notifyDataSetChanged();
}
···
}
那么问题在哪?
1.shimmer阴影大小和颜色
这个和.load布局布局有关,建议设置成android:background="@android:color/transparent"
当然也可以设置颜色值 但是如果你load的布局设置了其他颜色而不是透明色的话颜色叠加就不时你想要的效果了,阴影大小就是你的load布局的宽高
2.我用GridLayoutManager的时候本来是默认只显示五个,点了展开后才显示十个,但是实际上绑定了之后直接给我显示了十个,这个可以自己设置.count(5)