干货集中营app制作

前一阵利用一些免费的api接口做了一个新闻类的app,挺简陋的,但是自己用着还是可以的。

后来看到个干货集中营的api,里面的内容是一些大神们分享在github上的开源项目,非常值得学习。既然提供给了我们api,那么我们就得好好利用一下了。于是我就做了一个手机app来看学习一下。

最近修改了一下,弄了弄福利中的妹子图片,以前不知道福利中的是妹子图片。同时支持图片下载,也修复了以前网络不好,程序崩溃的问题。自己做的效果比较糙,可以去干货集中营看看大神们做的,UI以及使用效果都非常好。

代码地址https://github.com/SZJing/GanHuoTest



其实制作的流程和制作一个简单的新闻app一样,首先我们先要通过API接口获取数据。代码如下

private void RequestInfo() {
        final Request request = new Request.Builder()
                .url("http://gank.io/api/data/" + categroy + count + page)
                .build();
        OkHttpClient client = new OkHttpClient();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(MainActivity.this,"获取数据失败",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if (response.isSuccessful()){
                    String result = response.body().string();
                    Log.i("获取的信息",result);
                    Gson gson = new Gson();
                    infoGson = gson.fromJson(result,InfoGson.class);
                    handler.sendEmptyMessage(UPDATE);
                }
            }
        });
    }

这里是利用okhttp访问的url,同时这个url也没有写死,因为我们还要通过改变分类、获取数据的数量和页数来获得不同的数据。获得数据之后我们就要解析数据,通过打印的信息,可以看出返回的是json数据。这里我是用的Gson来解析数据,这里注意okhttp和Gson都是需要导入第三方库的,具体请看github中的build.gradle文件。最后通过handler通知更新UI将解析出来的数据展示到界面上。

private Handler handler = new Handler(){
        public void handleMessage(Message msg){
            super.handleMessage(msg);
            switch (msg.what){
                case UPDATE:
                    initRecycler();
                    break;
            }

        }
    };

通过initRecycler()方法将数据放到Adapter中,进而将每个数据展示出来。

在Adapter中需要注意返回的数据中的图片可能是空,这里需要自己判断一下。我是把图片为空的替换成我放在drawable中的图片,并且加了个随机选择图片,这样效果更好些。

if (List.get(position).getImages() == null){
            Random random = new Random();
            int index = random.nextInt(image.length);
            Glide.with(context).load(image[index]).into(holder.image);
        }else {
            String[] ImageUrl = List.get(position).getImages();
            Glide.with(context).load(ImageUrl[0]+"?imageView2/0/w/150").into(holder.image);
        }

接下来我们还要选择分类,这里我直接就是利用菜单来选择分类的,这样比较简单。但是中间也遇到了一个问题,就是我在Android6.0的虚拟机上测试时总是显示找不到menu文件,最后换成Android7.0的虚拟机就没问题,在真机上也没问题。也不知道为什么,反正是浪费了许多时间。创建菜单的代码如下:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.title_0:
                categroy = "all/";
                RequestInfo();
                break;
            case R.id.title_1:
                categroy = "福利/";
                RequestInfo();
                break;
            case R.id.title_2:
                categroy = "Android/";
                RequestInfo();
                break;
            case R.id.title_3:
                categroy = "iOS/";
                RequestInfo();
                break;
            case R.id.title_4:
                categroy = "休息视频/";
                RequestInfo();
                break;
            case R.id.title_5:
                categroy = "拓展资源/";
                RequestInfo();
                break;
            case R.id.title_6:
                categroy = "前端/";
                RequestInfo();
                break;
            default:
                break;
        }
        return true;
    }

创建菜单的方法网上有很多,我这只是最简单的一种使用。这里我们通过点击菜单中的项目来更换分类,并且再重新获取数据。


最后是刷新获取跟过内容,这里我只是用了个点击图片更新的效果,其实还可以用悬浮按钮FloatActionBar、下拉刷新等方法,我只是简单起见,没有过多的考虑很好的操作效果和UI界面。

Load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int p = Integer.valueOf(page);
                page = String.valueOf(p+1);
                RequestInfo();
            }
        });

点击图片,更换页数,再次获取数据就完成了加载更多。


最后就是这么多了,是不是很简单。

代码githubhttps://github.com/SZJing/GanHuoTest


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值