属性动画
MainActivity
private XRecyclerView xRecyclerView;
private int mPage;
private RecyclerAdapter adapter;
private IPresenterImpl iPresenter;
private ImageView image_xin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
xRecyclerView=findViewById(R.id.x_recycle);
image_xin=findViewById(R.id.image_xin);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
linearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
xRecyclerView.setLayoutManager(linearLayoutManager);
mPage=1;
iPresenter=new IPresenterImpl(this);
adapter = new RecyclerAdapter(this);
xRecyclerView.setAdapter(adapter);
xRecyclerView.setPullRefreshEnabled(true);
xRecyclerView.setLoadingMoreEnabled(true);
adapter.setOnItemClickListener(new RecyclerAdapter.onItemClickListener() {
@Override
public void getPosition(int position) {
adapter.delItem(position);
}
});
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
mPage=1;
loadData();
}
@Override
public void onLoadMore() {
loadData();
}
});
loadData();
image_xin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ObjectAnimator translationX = ObjectAnimator.ofFloat(image_xin, "translationX", 0, -480,0);
ObjectAnimator translationY = ObjectAnimator.ofFloat(image_xin, "translationY", 0, 800, 0);
ObjectAnimator alpha = ObjectAnimator.ofFloat(image_xin, "alpha", 1f, 0f, 1f);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setDuration(5000);
animatorSet.playTogether(translationX,translationY,alpha);
animatorSet.start();
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
image_xin.setSelected(true);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}
});
}
private void loadData() {
iPresenter.startRequest(String.format(Apis.TYPE_TITLE,mPage+""),new HashMap<String, String>(),GoodsBean.class);
}
@Override
public void requestSuccess(Object data) {
if(data instanceof GoodsBean){
GoodsBean goodsBean= (GoodsBean) data;
if(mPage==1){
adapter.setList(goodsBean.getData());
}else{
adapter.addList(goodsBean.getData());
}
mPage++;
}
xRecyclerView.refreshComplete();
xRecyclerView.loadMoreComplete();
}
适配器
private List<GoodsBean.DataBean> list;
private Context context;
private final int ONEIMAGE=0;
private final int THREEIMAGE=ONEIMAGE+1;
public RecyclerAdapter(Context context) {
this.context = context;
list=new ArrayList<>();
}
public void setList(List<GoodsBean.DataBean> list) {
this.list.clear();
if(list!=null){
this.list.addAll(list);
}
notifyDataSetChanged();
}
public void addList(List<GoodsBean.DataBean> list) {
if(list!=null){
this.list.addAll(list);
}
notifyDataSetChanged();
}
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
RecyclerView.ViewHolder holder=null;
if (i==ONEIMAGE){
View view= LayoutInflater.from(context).inflate(R.layout.one_item,viewGroup,false);
holder=new ViewHolderOneImage(view);
}else {
View view=LayoutInflater.from(context).inflate(R.layout.three_item,viewGroup,false);
holder=new ViewHolderThreeImage(view);
}
return holder;
}
@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, final int i) {
int itemViewType = getItemViewType(i);
switch (itemViewType){
case ONEIMAGE:
final ViewHolderOneImage oneImage= (ViewHolderOneImage) viewHolder;
oneImage.textView_title.setText(list.get(i).getTitle());
Glide.with(context).load(list.get(i).getThumbnail_pic_s()).into(oneImage.imageView_pic_s);
oneImage.textView_one_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(itemClickListener!=null){
itemClickListener.getPosition(i);
}
}
});
break;
case THREEIMAGE:
final ViewHolderThreeImage threeImage= (ViewHolderThreeImage) viewHolder;
threeImage.textView_title.setText(list.get(i).getTitle());
Glide.with(context).load(list.get(i).getThumbnail_pic_s()).into(threeImage.imageView_pic_s);
Glide.with(context).load(list.get(i).getThumbnail_pic_s02()).into(threeImage.imageView_pic_s2);
Glide.with(context).load(list.get(i).getThumbnail_pic_s03()).into(threeImage.imageView_pic_s3);
threeImage.textView_three_del.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(itemClickListener!=null){
itemClickListener.getPosition(i);
}
}
});
break;
default:
break;
}
}
@Override
public int getItemViewType(int position) {
return list.get(position).hasImage()? ONEIMAGE : THREEIMAGE;
}
static class ViewHolderOneImage extends RecyclerView.ViewHolder {
TextView textView_title,textView_one_del;
ImageView imageView_pic_s;
ConstraintLayout constraintLayout_one;
public ViewHolderOneImage(@NonNull View itemView) {
super(itemView);
textView_title=itemView.findViewById(R.id.textView_one_title);
imageView_pic_s=itemView.findViewById(R.id.imageView_one_pic_s);
textView_one_del=itemView.findViewById(R.id.textView_one_del);
constraintLayout_one=itemView.findViewById(R.id.content_one);
}
}
static class ViewHolderThreeImage extends RecyclerView.ViewHolder {
TextView textView_title,textView_three_del;
ImageView imageView_pic_s,imageView_pic_s2,imageView_pic_s3;
ConstraintLayout constraintLayout_three;
public ViewHolderThreeImage(@NonNull View itemView) {
super(itemView);
textView_title=itemView.findViewById(R.id.textView_three_title);
imageView_pic_s=itemView.findViewById(R.id.imageView_three_pic_s);
imageView_pic_s2=itemView.findViewById(R.id.imageView_three_pic_s2);
imageView_pic_s3=itemView.findViewById(R.id.imageView_three_pic_s3);
textView_three_del=itemView.findViewById(R.id.textView_three_del);
constraintLayout_three=itemView.findViewById(R.id.content_three);
}
}
@Override
public int getItemCount() {
return list.size();
}
//接口回调
public onItemClickListener itemClickListener;
public void setOnItemClickListener(onItemClickListener itemClick){
itemClickListener=itemClick;
}
public interface onItemClickListener{
void getPosition(int position);
}
//删除
public void delItem(int position){
list.remove(position);
notifyItemRemoved(position);
notifyDataSetChanged();
}
MVP层详见
https://github.com/YangJun1208/week032/tree/master/zhoukaolianxi031