你只需要在
RecyclerView里面 实现
onViewAttachedToWindow方法 在方法里面设置你要的动画就可以实现
动画工具类
public class ScaleInAnimation{
private static final float DEFAULT_SCALE_FROM = .5f;
private final float mFrom;
public ScaleInAnimation() {
this(DEFAULT_SCALE_FROM);
}
public ScaleInAnimation(float from) {
mFrom = from;
}
public Animator[] getAnimators(View view) {
ObjectAnimator scaleX = ObjectAnimator.ofFloat(view, "scaleX", mFrom, 1f);
ObjectAnimator scaleY = ObjectAnimator.ofFloat(view, "scaleY", mFrom, 1f);
return new ObjectAnimator[]{scaleX, scaleY};
}
}
以下我拿万能适配器实现的代码
public class QuickMeasureAdapter extends BaseQuickAdapter<MeasuerSQLBean,BaseViewHolder> {
public QuickMeasureAdapter(@Nullable List<MeasuerSQLBean> data) {
super(R.layout.recycler_meaureitem,data);
}
@Override
protected void convert(BaseViewHolder helper, MeasuerSQLBean item) {
}
@Override
public void onViewAttachedToWindow(BaseViewHolder holder) {
super.onViewAttachedToWindow(holder);
addAnimation(holder);
}
private ScaleInAnimation mSelectAnimation = new ScaleInAnimation();
private void addAnimation(BaseViewHolder holder) {
for (Animator anim : mSelectAnimation.getAnimators(holder.itemView)) {
anim.setDuration(1500).start();
anim.setInterpolator(new LinearInterpolator());
}
}
}
接下来是万能适配器的下拉加载实现
首先先是给他添加4条数据
if (Measuerlists==null){
Measuerlists=new ArrayList<>();
}
if (Measuerlists!=null){
Measuerlists.clear();
if (allSQLBeanDao.size()>=4){
for (int i = 0; i < 4; i++) {
Measuerlists.add(allSQLBeanDao.get(i));
}
}else{
for (int i = 0; i < allSQLBeanDao.size(); i++) {
Measuerlists.add(allSQLBeanDao.get(i));
}
}
}
之后把集合添加到适配器
//上拉加载(设置这个监听就表示有上拉加载功能了)
quickMeasureAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {
private boolean isErr=true;
private int mCurrentCounter;
@Override public void onLoadMoreRequested() {
recycler_measure.postDelayed(new Runnable() {
@Override
public void run() {
mCurrentCounter = quickMeasureAdapter.getData().size();
//TOTAL_COUNTER 是你一个有多少条数据的size
if (mCurrentCounter >= TOTAL_COUNTER) {
//数据全部加载完毕
Toast.makeText(getContext(), "数据全部加载完毕", Toast.LENGTH_SHORT).show();
quickMeasureAdapter.loadMoreEnd();
} else {
if (isErr) {
//成功获取更多数据(可以直接往适配器添加数据)
addData(mCurrentCounter);
//主动调用加载完成,停止加载
quickMeasureAdapter.loadMoreComplete();
} else {
//获取更多数据失败
isErr = true;
Toast.makeText(getContext(), "获取更多数据失败", Toast.LENGTH_SHORT).show();
//同理,加载失败也要主动调用加载失败来停止加载(而且该方法会提示加载失败)
quickMeasureAdapter.loadMoreFail();
}
}
}
}, 2000);
}
});
quickMeasureAdapter.setEnableLoadMore(true);
}
//添加的数据
private void addData(int mCurrentCounter) {
if (addmeauserlist==null){
addmeauserlist=new ArrayList<>();
}
if (addmeauserlist!=null){
addmeauserlist.clear();
List<MeasuerSQLBean> allSQLBeanDao = getAllSQLBeanDao();
for (int i = mCurrentCounter; i < mCurrentCounter+4; i++) {
if (i<allSQLBeanDao.size())
addmeauserlist.add(allSQLBeanDao.get(i));
}
quickMeasureAdapter.addData(addmeauserlist);
}
}
完成