OKHTTP,RecycleView,ImageLoader,Glide,自定义VIew

来源:互联网 发布:excel数据对比 编辑:程序博客网 时间:2024/06/06 16:59
依赖:
compile 'com.android.support:recyclerview-v7:21.0.+'compile 'com.youth.banner:banner:1.4.9'compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'compile 'com.google.code.gson:gson:2.8.1'compile 'com.squareup.okhttp:okhttp:2.4.0'compile 'com.github.bumptech.glide:glide:3.7.0'



public class MyView extends View { private static final float RADIUS = 50F; private Paint mPaint; private PointF mPointF; public MyView(Context context, AttributeSet attrs) { super(context, attrs); init(); } //初始化画笔和坐标 private void init() { mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); mPaint.setColor(Color.BLUE); mPointF = new PointF(RADIUS, RADIUS); } @Override protected void onDraw(Canvas canvas) { drawCircle(canvas); } //绘制小球 private void drawCircle(Canvas canvas) { float x = mPointF.x; float y = mPointF.y; canvas.drawCircle(x, y, RADIUS, mPaint); } private void startAnimation() { PointF startPoint = new PointF(RADIUS, RADIUS); PointF endPoint = new PointF(getWidth() - RADIUS, getHeight() - RADIUS); ValueAnimator anim = ValueAnimator.ofObject(new PointFEvaluator(), startPoint, endPoint); anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { //坐标改变 进行图像重绘 public void onAnimationUpdate(ValueAnimator animation) { mPointF = (PointF) animation.getAnimatedValue(); invalidate(); } }); //背景色渐变动画 ObjectAnimator anim2 = ObjectAnimator.ofObject(mPaint, "color", new ArgbEvaluator(), Color.BLUE, Color.BLUE); AnimatorSet animSet = new AnimatorSet(); animSet.play(anim).with(anim2); animSet.setDuration(3000); animSet.start(); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { super.onWindowFocusChanged(hasWindowFocus); startAnimation(); }}
------------------------------------------------------------------------------------------------------------------------------
 
public class SplashActivity extends AppCompatActivity {    private MyView myview;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_splash);        myview = (MyView) findViewById(R.id.myview);        new Thread(){            @Override            public void run() {                SystemClock.sleep(3000);                startActivity(new Intent(SplashActivity.this,MainActivity.class));                finish();            }        }.start();    }}
===========================================================================
public class MainActivity extends FragmentActivity {    private RadioGroup rg;    private ViewPager vp;    private List<Fragment> list = new ArrayList<>();    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        rg = (RadioGroup) findViewById(R.id.rg);        vp = (ViewPager) findViewById(R.id.viewpager);        ImageLoader.getInstance().init(ImageLoaderConfiguration.createDefault(this));        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {                for (int i = 0; i < list.size(); i++) {                    RadioButton rb = (RadioButton) rg.getChildAt(i);                    if (rb.isChecked()) {                        rb.setTextColor(Color.RED);                        vp.setCurrentItem(i, false);                    } else {                        rb.setTextColor(Color.BLACK);                    }                }            }        });        initData();        vp.setOnTouchListener(new View.OnTouchListener() {            @Override            public boolean onTouch(View v, MotionEvent event) {                return true;            }        });    }    private void initData() {        list.add(new FragmentOne());        list.add(new FragmentTwo());        list.add(new FragmentThree());        list.add(new FragmentFour());        vp.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {                return list.get(position);            }            @Override            public int getCount() {                return list.size();            }        });    }}
---------------------------------------------------------------------------------------------------------------------------
public class FragmentOne extends Fragment {    private Banner banner;    private RecyclerView recyclerView;    private List<ListBean.StoriesBean> list = new ArrayList<>();    private List<ListBean.TopStoriesBean> list2 = new ArrayList<>();//    private List<String> strList = new ArrayList<>();    private List<String> imgList = new ArrayList<>();    private String url = "http://news-at.zhihu.com/api/4/news/latest";    private Handler handler = new Handler();    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = View.inflate(getContext(), R.layout.frag_one, null);        banner = (Banner) view.findViewById(R.id.mybanner);        recyclerView = (RecyclerView) view.findViewById(R.id.myrecycleview);        LinearLayoutManager linearmanager = new LinearLayoutManager(getContext());        recyclerView.setLayoutManager(linearmanager);//        MyTask task = new MyTask();//        task.execute(url);        initData();        return view;    }    private void initData() {        OkHttpClient client = new OkHttpClient();        //网络请求,传入url地址        Request request = new Request.Builder().url(url).build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Request request, IOException e) {            }            @Override            public void onResponse(Response response) throws IOException {                if (response.body() != null && response.isSuccessful()) {                    //result就是返回的数据                    String result = response.body().string();                    ListBean bean = ListBean.objectFromData(result);                    list = bean.stories;                    list2 = bean.top_stories;                    for (int i = 0; i < list2.size(); i++) {                        imgList.add(list2.get(i).image);                    }//                    for (int i =0;i <list.size();i++){//                        strList.add(list.get(i).images.get(i));//                    }                    handler.post(new Runnable() {                        @Override                        public void run() {                            //配置recycleView适配器                            recyclerView.setAdapter(new MyAdapter(list, getContext()));                            //初始化banner,设置图片集合,小圆点样式,轮播切换时间                            banner.setImageLoader(new GlideImageLoader());                            banner.setImages(imgList);                            banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR);//小圆点样式                            banner.setDelayTime(2000);//切换时间                            banner.start();                        }                    });                }            }        });    }    //Banner使用Glide加载图片    public class GlideImageLoader extends ImageLoader {        @Override        public void displayImage(Context context, Object path, ImageView imageView) {            Glide.with(context).load(path).into(imageView);        }    }}
---------------------------------------------------------------------------------------------------------------------------------
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {    private List<ListBean.StoriesBean> list = new ArrayList<>();//    private List<String> strList = null;    private Context context;    private ImageLoader loader;    public MyAdapter(List<ListBean.StoriesBean> list, Context context) {        this.list = list;//        this.strList = strList;        this.context = context;        loader = ImageLoader.getInstance();    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item_list, parent, false);        return new MyAdapter.ViewHolder(view);    }    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        holder.id.setText(list.get(position).id);        holder.title.setText(list.get(position).title);//        strList = list.get(position).images;//        loader.displayImage(strList.get(position), holder.img);    }    @Override    public int getItemCount() {        return list.size();    }    public class ViewHolder extends RecyclerView.ViewHolder {        public View view;        public ImageView img;        public TextView id, title;        public ViewHolder(View view) {            super(view);            this.view = view;            this.img = (ImageView) view.findViewById(R.id.item_list_img);            this.id = (TextView) view.findViewById(R.id.item_list_id);            this.title = (TextView) view.findViewById(R.id.item_list_title);        }    }}
============================================================================
public class MyAdapterGrid extends RecyclerView.Adapter<MyAdapterGrid.ViewHolder> {    private List<MyBean.OthersBean> list = new ArrayList<>();    private Context context;    private ImageLoader loader;    public MyAdapterGrid(List<MyBean.OthersBean> list, Context context) {        this.list = list;        this.context = context;        loader = ImageLoader.getInstance();    }    //刷新方法    public void addItem(List<MyBean.OthersBean> newdatas) {        newdatas.addAll(list);        list.removeAll(list);        list.addAll(newdatas);        notifyDataSetChanged();    }    //下拉加载数据    public void addMore(List<MyBean.OthersBean> newdatas) {        list.addAll(newdatas);        notifyDataSetChanged();    }    @Override    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = LayoutInflater.from(context).inflate(R.layout.item_grid, parent, false);        return new MyAdapterGrid.ViewHolder(view);    }    @Override    public void onBindViewHolder(ViewHolder holder, int position) {        holder.title.setText(list.get(position).description);        String url = list.get(position).thumbnail;        loader.displayImage(url, holder.img);    }    @Override    public int getItemCount() {        return list.size();    }    public class ViewHolder extends RecyclerView.ViewHolder {        public View view;        public ImageView img;        public TextView title;        public ViewHolder(View view) {            super(view);            this.view = view;            this.img = (ImageView) view.findViewById(R.id.item_grid_img);            this.title = (TextView) view.findViewById(R.id.item_grid_title);        }    }}
==============================================================================
public class FragmentFour extends Fragment {    private RecyclerView recyclerView;    private List<MyBean.OthersBean> list = new ArrayList<>();    private String url = "http://news-at.zhihu.com/api/4/themes";    private Handler handler = new Handler();    private SwipeRefreshLayout swipeRefreshLayout;    private GridLayoutManager manager;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = View.inflate(getContext(), R.layout.frag_four, null);        recyclerView = (RecyclerView) view.findViewById(R.id.frag_four_recycleview);        swipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.swiperefresh);        manager = new GridLayoutManager(getContext(), 2);        recyclerView.setLayoutManager(manager);        //初始化数据        initData();        swipeRefreshLayout.setColorSchemeColors(Color.RED, Color.BLUE);        swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        new MyAdapterGrid(list, getContext()).addItem(list);                        swipeRefreshLayout.setRefreshing(false);                    }                },3000);            }        });        return view;    }    private void initData() {        OkHttpClient client = new OkHttpClient();        //网络请求,传入url地址        Request request = new Request.Builder().url(url).build();        Call call = client.newCall(request);        call.enqueue(new Callback() {            @Override            public void onFailure(Request request, IOException e) {            }            @Override            public void onResponse(Response response) throws IOException {                if (response.body() != null && response.isSuccessful()) {                    //result就是返回的数据                    String result = response.body().string();                    MyBean bean = MyBean.objectFromData(result);                    list = bean.others;                    handler.post(new Runnable() {                        @Override                        public void run() {                            //配置recycleView适配器                            recyclerView.setAdapter(new MyAdapterGrid(list, getContext()));                        }                    });                }            }        });    }}