xRecyclerView的多条目+属性动画

7 篇文章 0 订阅
2 篇文章 0 订阅

依赖

implementation 'com.jcodecraeer:xrecyclerview:1.5.9'

布局

<com.jcodecraeer.xrecyclerview.XRecyclerView
    android:id="@+id/x_recyclerview"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="8"

    ></com.jcodecraeer.xrecyclerview.XRecyclerView>

适配器

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private List<NewsBean.DataBean> list;
    private Context context;
    private static final int ONEIMAGE=0;
    private static  final int THREEIMAGE=ONEIMAGE+1;

    public RecyclerAdapter(Context context) {
        this.context = context;
        list=new ArrayList<>();
    }

    public void setList(List<NewsBean.DataBean> list) {
        this.list.clear();
        this.list.addAll(list);
        notifyDataSetChanged();
    }
    public void addList(List<NewsBean.DataBean> list) {
        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.oneimage_item,viewGroup,false);
            holder = new ViewHolderOneImage(view);

        }else {
            View view= LayoutInflater.from(context).inflate(R.layout.threeimage_item,viewGroup,false);
            holder =  new ViewHolderThreeImage(view);
        }

        return holder;
    }

    @Override
    public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder viewHolder, final int i) {
        final int itemViewType = getItemViewType(i);
        switch (itemViewType){
            case ONEIMAGE:
                final ViewHolderOneImage oneImage= (ViewHolderOneImage) viewHolder;
                oneImage.textView_title_one.setText(list.get(i).getTitle());
               ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),oneImage.imageView_one);
               oneImage.imageView_one.setOnClickListener(new View.OnClickListener() {
                   @Override
                   public void onClick(View v) {
                       animator_image(oneImage.imageView_one,i);
                   }
               });
                break;
            case THREEIMAGE:
                final ViewHolderThreeImage threeImage= (ViewHolderThreeImage) viewHolder;
                threeImage.textView_title_three.setText(list.get(i).getTitle());
                ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s(),threeImage.imageView1);
                ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s02(),threeImage.imageView2);
                ImageLoader.getInstance().displayImage(list.get(i).getThumbnail_pic_s03(),threeImage.imageView3);
                threeImage.imageView1.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        animator_image(threeImage.imageView1,i);
                    }
                });
                threeImage.imageView2.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        animator_image(threeImage.imageView2,i);
                    }
                });
                threeImage.imageView3.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        animator_image(threeImage.imageView3,i);
                    }
                });
                break;
                default:
                    break;


        }
        viewHolder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                if(longitemClickListen!=null){
                    longitemClickListen.delItem(i);
                }
                return true;
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    @Override
    public int getItemViewType(int position) {
        return list.get(position).hasImage() ?ONEIMAGE : THREEIMAGE ;
    }

    static class ViewHolderOneImage extends RecyclerView.ViewHolder {
        public TextView textView_title_one;
        public ImageView imageView_one;
        public ConstraintLayout constraintLayout;
        public ViewHolderOneImage(@NonNull View itemView) {
            super(itemView);
            textView_title_one=itemView.findViewById(R.id.textView_title_one);
            imageView_one=itemView.findViewById(R.id.imageView_one);
            constraintLayout=itemView.findViewById(R.id.content_layout);

        }
    }
    static class ViewHolderThreeImage extends RecyclerView.ViewHolder{
        public TextView textView_title_three;
        public ImageView imageView1,imageView2,imageView3;
        public ConstraintLayout constraintLayout;
        public ViewHolderThreeImage(@NonNull View itemView) {
            super(itemView);
            textView_title_three=itemView.findViewById(R.id.textView_title_three);
            imageView1=itemView.findViewById(R.id.imageView1);
            imageView2=itemView.findViewById(R.id.imageView2);
            imageView3=itemView.findViewById(R.id.imageView3);
            constraintLayout=itemView.findViewById(R.id.content_layout2);


        }


    }
    private OnLongitemClickListen longitemClickListen;
    public void setOnLongitemClickListen(OnLongitemClickListen itemClickListen){
        longitemClickListen=itemClickListen;
    }
    //条目点击事件
    public interface OnLongitemClickListen{
        void delItem(int position);
    }
    //删除
    public void delData(int position){
        list.remove(position);
        notifyDataSetChanged();
    }
    public void animator_image(View view,int position){
        ObjectAnimator animator=ObjectAnimator.ofFloat(view,"alpha",1f,0f,1f);
        animator.setDuration(2000);
        animator.start();
    }
}

bean类

public class NewsBean {
 private String msg;
    private int code;
    private List<DataBean> data;

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public List<DataBean> getData() {
        return data;
    }

    public void setData(List<DataBean> data) {
        this.data = data;
    }

    public static class DataBean {
      private String uniquekey;
        private String title;
        private String date;
        private String category;
        private String author_name;
        private String url;
        private String thumbnail_pic_s;
        private String thumbnail_pic_s02;
        private String thumbnail_pic_s03;

        public String getUniquekey() {
            return uniquekey;
        }

        public void setUniquekey(String uniquekey) {
            this.uniquekey = uniquekey;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }

        public String getCategory() {
            return category;
        }

        public void setCategory(String category) {
            this.category = category;
        }

        public String getAuthor_name() {
            return author_name;
        }

        public void setAuthor_name(String author_name) {
            this.author_name = author_name;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }

        public String getThumbnail_pic_s() {
            return thumbnail_pic_s;
        }

        public void setThumbnail_pic_s(String thumbnail_pic_s) {
            this.thumbnail_pic_s = thumbnail_pic_s;
        }

        public String getThumbnail_pic_s02() {
            return thumbnail_pic_s02;
        }

        public void setThumbnail_pic_s02(String thumbnail_pic_s02) {
            this.thumbnail_pic_s02 = thumbnail_pic_s02;
        }

        public String getThumbnail_pic_s03() {
            return thumbnail_pic_s03;
        }

        public void setThumbnail_pic_s03(String thumbnail_pic_s03) {
            this.thumbnail_pic_s03 = thumbnail_pic_s03;
        }
        public boolean hasImage(){
            return thumbnail_pic_s02==null && thumbnail_pic_s03==null;
        }
    }
}

activity中

public class MainActivity extends AppCompatActivity implements IView{

    private XRecyclerView xRecyclerView;
    private IPresenterImpl iPresenter;
    private RecyclerAdapter adapter;
    private int mPage;
    private final int COUNT=31;
    private ImageView imageView;
    private TextView textView;
    private Button button_login;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView(savedInstanceState);
        //实例化
        mPage=1;
        iPresenter=new IPresenterImpl(this);
        final LinearLayoutManager manager=new LinearLayoutManager(this);
        manager.setOrientation(OrientationHelper.VERTICAL);
        xRecyclerView.setLayoutManager(manager);
        adapter=new RecyclerAdapter(this);
        xRecyclerView.setAdapter(adapter);
        xRecyclerView.setPullRefreshEnabled(true);
        xRecyclerView.setLoadingMoreEnabled(true);
        xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
            @Override
            public void onRefresh() {
               mPage=1;
               getInfo();
            }

            @Override
            public void onLoadMore() {
                getInfo();
            }
        });
        getInfo();
     adapter.setOnLongitemClickListen(new RecyclerAdapter.OnLongitemClickListen() {
         @Override
         public void delItem(final int position) {

           AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this)
                   .setTitle("删除")
                   .setMessage("确定要删除吗")
                   .setIcon(R.drawable.ic_launcher_background)
                   .setPositiveButton("是", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int which) {
                           adapter.delData(position);
                       }
                   })
                   .setNegativeButton("否", new DialogInterface.OnClickListener() {
                       @Override
                       public void onClick(DialogInterface dialog, int which) {

                       }
                   });

           builder.show();



         }
     });
     loginMethod();
     imageViewMethod();

    }
//属性动画
    private void imageViewMethod() {
        //补间动画
       /* ScaleAnimation scaleAnimation = new ScaleAnimation(0f, 2, 0f, 2, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        scaleAnimation.setDuration(2000);
        scaleAnimation.setFillAfter(true);
        imageView.startAnimation(scaleAnimation);*/
       imageView.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               ScaleAnimation scaleAnimation = new ScaleAnimation(0f, 2, 0f, 2, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
               scaleAnimation.setDuration(2000);
               imageView.startAnimation(scaleAnimation);
           }
       });

    }

    //第三方qq登录
    private void loginMethod() {
           button_login.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {
                   UMShareConfig config=new UMShareConfig();
                   config.isNeedAuthOnGetUserInfo(true);
                   UMShareAPI.get(MainActivity.this).setShareConfig(config);

                   UMShareAPI umShareAPI = UMShareAPI.get(MainActivity.this);
                   umShareAPI.getPlatformInfo(MainActivity.this, SHARE_MEDIA.QQ, new UMAuthListener() {
                       @Override
                       public void onStart(SHARE_MEDIA share_media) {

                       }

                       @Override
                       public void onComplete(SHARE_MEDIA share_media, int i, Map<String, String> map) {
                           String screen_name = map.get("screen_name");
                           String profile_image_url = map.get("profile_image_url");
                           ImageLoader.getInstance().displayImage(profile_image_url,imageView);
                           textView.setText(screen_name);
                           button_login.setVisibility(View.INVISIBLE);

                       }

                       @Override
                       public void onError(SHARE_MEDIA share_media, int i, Throwable throwable) {

                       }

                       @Override
                       public void onCancel(SHARE_MEDIA share_media, int i) {

                       }
                   });
               }
           });
    }

    private void getInfo() {
        Map<String,String> params=new HashMap<>();
        iPresenter.startRequest(Path.path_news,params,NewsBean.class);
    }

    //获取资源ID
    private void initView(Bundle savedInstanceState) {
        xRecyclerView = findViewById(R.id.x_recyclerview);
        imageView = findViewById(R.id.image_tx);
        textView = findViewById(R.id.text_name);
        button_login = findViewById(R.id.button_login);
    }

    @Override
    public void requestData(Object data) {
        NewsBean bean= (NewsBean) data;
        List<NewsBean.DataBean> data1 = bean.getData();
        if(mPage==1){
            adapter.setList(data1);
        }else {
            adapter.addList(data1);
        }
        mPage++;
        xRecyclerView.refreshComplete();
        xRecyclerView.loadMoreComplete();
        if(data1.size()<COUNT){
            xRecyclerView.setLoadingMoreEnabled(false);
        }

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        UMShareAPI.get(this).onActivityResult(requestCode,resultCode,data);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        iPresenter.dtechView();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值