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


依赖:
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()));
                        }
                    });
                }
            }
        });
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值