来源:互联网 发布:培训班 知乎 编辑:程序博客网 时间:2024/06/02 09:00
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private List<GoodsBean.DataBean> list = new ArrayList<>();
    private Context context;
    private LayoutInflater inflater;
    private final int ZERO_TYPE = 0,ONE_TYPE = 1,TEO_TYPE = 2;


    public MyAdapter(Context context) {
        this.context = context;
        inflater = LayoutInflater.from(context);
    }

    public void addData(List<GoodsBean.DataBean> data){
        this.list.addAll(data);
        notifyDataSetChanged();
    }

    public void updateData(List<GoodsBean.DataBean> data){
        this.list.clear();
        addData(data);
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        final ViewHolder1 holder1;
        final ViewHolder2 holder2;
        final ViewHolder3 holder3;
        if (viewType == ZERO_TYPE) {
            final View view = inflater.inflate(R.layout.goods_item, parent, false);
            holder2 = new ViewHolder2(view);
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setRecyclerViewListener.setRecyclerViewListener(view,holder2.getLayoutPosition());
                }
            });
            return holder2;
        }else if (viewType == ONE_TYPE){
            final View view = inflater.inflate(R.layout.recycler_item1, parent, false);
            holder1 = new ViewHolder1(view);
            view.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setRecyclerViewListener.setRecyclerViewListener(view,holder1.getLayoutPosition());
                }
            });
            return holder1;
        }
        final View view = inflater.inflate(R.layout.recycler_item2, parent, false);
        holder3 = new ViewHolder3(view);
        view.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                setRecyclerViewListener.setRecyclerViewListener(view,holder3.getLayoutPosition());
            }
        });
        return holder3;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        GoodsBean.DataBean bean = list.get(position);
        String[] split = bean.images.split("\\|");
        if (holder instanceof ViewHolder2){
            Glide.with(context).load(split[0]).into(((ViewHolder2) holder).imageView);
            ((ViewHolder2) holder).textView.setText(bean.subhead);
        }
        if (holder instanceof ViewHolder1){
            ((ViewHolder1) holder).textView.setText(bean.title);
        }
        if (holder instanceof ViewHolder3){
            Glide.with(context).load(split[0]).into(((ViewHolder3) holder).img1);
            Glide.with(context).load(split[1]).into(((ViewHolder3) holder).img2);
            Glide.with(context).load(split[2]).into(((ViewHolder3) holder).img3);
            Glide.with(context).load(split[0]).into(((ViewHolder3) holder).img4);
        }
    }

    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }

    @Override
    public int getItemViewType(int position) {
        if (list.get(position).itemtype == ONE_TYPE){
            return ONE_TYPE;
        }else if (list.get(position).itemtype == ZERO_TYPE){
            return ZERO_TYPE;
        }
        return TEO_TYPE;
    }



    public class ViewHolder1 extends RecyclerView.ViewHolder{

        public TextView textView;

        public ViewHolder1(View itemView) {
            super(itemView);
            textView = (TextView)itemView.findViewById(R.id.one_text);
        }
    }

    public class ViewHolder2 extends RecyclerView.ViewHolder{

        public TextView textView;
        public ImageView imageView;

        public ViewHolder2(View itemView) {
            super(itemView);
            textView = (TextView)itemView.findViewById(R.id.zero_text);
            imageView = (ImageView)itemView.findViewById(R.id.zero_img);
        }
    }

    public class ViewHolder3 extends RecyclerView.ViewHolder{

        public ImageView img1,img2,img3,img4;

        public ViewHolder3(View itemView) {
            super(itemView);
            img1 = (ImageView)itemView.findViewById(R.id.two_img1);
            img2 = (ImageView)itemView.findViewById(R.id.two_img2);
            img3 = (ImageView)itemView.findViewById(R.id.two_img3);
            img4 = (ImageView)itemView.findViewById(R.id.two_img4);
        }
    }

    private SetRecyclerViewListener setRecyclerViewListener;

    public void setListener(SetRecyclerViewListener setRecyclerViewListener){
        this.setRecyclerViewListener = setRecyclerViewListener;
    }

    public interface SetRecyclerViewListener{
        void setRecyclerViewListener(View view,int position);
    }

}



public class GoodsContract {

    public interface IGoodView{
        void setData(List<GoodsBean.DataBean> data);
    }

    public interface IGoodModel{
       void getDataByNet(IGoodView view);
    }

    public interface IGoodPresenter{
        void showData();
    }
}

public class ProgressBarView extends View {

    private Paint paint;
    private int currentX = 100;
    private int  currentY = 100;
    private int count;
    private PointF pointF = new PointF(currentX,currentY);
    private  int mProgress;


    public ProgressBarView(Context context) {
        super(context);
        initpaint(context);
    }

    private void initpaint(Context context) {
        paint = new Paint();
        paint.setAntiAlias(true);
        paint.setStyle(Paint.Style.STROKE);
    }

    public ProgressBarView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        initpaint(context);
    }

    public ProgressBarView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initpaint(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        paint.setStrokeWidth(0);
        paint.setColor(Color.BLACK);
        canvas.drawCircle(pointF.x,pointF.y,20,paint);
        canvas.drawCircle(pointF.x,pointF.y,30,paint);

        paint.setStrokeWidth(10);
        paint.setColor(Color.RED);
        RectF recyF = new RectF(75,75,125,125);
        canvas.drawArc(recyF,-90,mProgress,false,paint);

        paint.setStrokeWidth(1);
        paint.setColor(Color.BLUE);
        canvas.drawText(count+"",98,102,paint);
    }

    public void setProgress(int progress){
        this.mProgress = progress;
        if (mProgress == 120){
            count = 2;
        }
        if (mProgress == 240){
            count = 1;
        }
        if (mProgress == 360){
            count = 0;
        }
        invalidate();
    }
}
public class GoodsModel implements GoodsContract.IGoodModel {

    private String url = "http://120.27.23.105/product/getProducts?pscid=1";
    private Handler handler = new Handler();


    @Override
    public void getDataByNet(final GoodsContract.IGoodView view) {
//        OkHttp3Utils.doGet(url, new Callback() {
//            @Override
//            public void onFailure(Call call, IOException e) {
//
//            }
//
//            @Override
//            public void onResponse(Call call, Response response) throws IOException {
//                final String string = response.body().string();
//                handler.post(new Runnable() {
//                    @Override
//                    public void run() {
//                        GoodsBean bean = GoodsBean.objectFromData(string);
//                        view.setData(bean.data);
//                    }
//                });
//            }
//        });

        OkHttp3Utils.doGet(url, new GsonObjectCallback<GoodsBean>() {
            @Override
            public void onUi(GoodsBean goodsBean) {
                view.setData(goodsBean.data);
            }

            @Override
            public void onFailed(Call call, IOException e) {

            }
        });

    }
}


public class GoodPresenter implements GoodsContract.IGoodPresenter {

    private GoodsContract.IGoodView view;
    private GoodsModel model;


    public GoodPresenter(GoodsContract.IGoodView view) {
        this.view = view;
        model = new GoodsModel();
    }

    @Override
    public void showData() {
        model.getDataByNet(view);
    }
}


public class MainActivity extends AppCompatActivity {

    private ProgressBarView pbv;
    private int progress = 120;
    private int time = 3;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            time--;
            if (time == 0){
                startActivity(new Intent(MainActivity.this,HomeActivity.class));
                finish();
            }else {
                progress += 120;
                pbv.setProgress(progress);
                handler.sendEmptyMessageDelayed(0,1000);
            }

        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ImageView imageView = (ImageView)findViewById(R.id.logo_img);
        pbv = (ProgressBarView)findViewById(R.id.my_progess);
        setAnimation(imageView);
        handler.sendEmptyMessage(0);
        pbv.setProgress(progress);
    }

    private void setAnimation(ImageView imageView) {
        ObjectAnimator trans = ObjectAnimator.ofFloat(imageView,"translationY",0f,300f).setDuration(1000);
        ObjectAnimator scalX = ObjectAnimator.ofFloat(imageView,"scaleX",1f,2f,1f).setDuration(1000);
        ObjectAnimator scalY = ObjectAnimator.ofFloat(imageView,"scaleY",1f,2f,1f).setDuration(1000);

        AnimatorSet setAnimatior = new AnimatorSet();
        setAnimatior.play(trans).before(scalX).before(scalY);
        setAnimatior.start();
    }
}


public class HomeActivity extends AppCompatActivity implements GoodsContract.IGoodView{

    private RecyclerView recyclerView;
    private GoodPresenter presenter;
    private MyAdapter adapter;
    private SpringView springView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        presenter = new GoodPresenter(this);

        recyclerView = (RecyclerView)findViewById(R.id.my_recycler);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(manager);
        adapter = new MyAdapter(this);
        recyclerView.setAdapter(adapter);
        springView = (SpringView)findViewById(R.id.my_springview);

        springView.setHeader(new DefaultHeader(this));
        springView.setFooter(new DefaultFooter(this));



        presenter.showData();
    }

    @Override
    public void setData(final List<GoodsBean.DataBean> data) {
        adapter.addData(data);
        springView.onFinishFreshAndLoad();
        //点击事件
        adapter.setListener(new MyAdapter.SetRecyclerViewListener() {
            @Override
            public void setRecyclerViewListener(View view, int position) {
                GoodsBean.DataBean bean = data.get(position);
                Intent intent = new Intent(HomeActivity.this,DeatilsActivity.class);
                intent.putExtra("name",bean.title);
                startActivity(intent);
            }
        });
        //上拉刷新,下拉加载
        springView.setListener(new SpringView.OnFreshListener() {
            @Override
            public void onRefresh() {

                adapter.updateData(data);
                springView.onFinishFreshAndLoad();
            }

            @Override
            public void onLoadmore() {
                adapter.addData(data);
                springView.onFinishFreshAndLoad();
            }
        });
    }
}



原创粉丝点击