前一阵利用一些免费的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() {@Overridepublic void onFailure(Call call, IOException e) {Toast.makeText(MainActivity.this,"获取数据失败",Toast.LENGTH_SHORT).show();}@Overridepublic 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的虚拟机就没问题,在真机上也没问题。也不知道为什么,反正是浪费了许多时间。创建菜单的代码如下:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main,menu);return true;}@Overridepublic 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() {@Overridepublic void onClick(View v) {int p = Integer.valueOf(page);page = String.valueOf(p+1);RequestInfo();}});

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

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

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

干货集中营app制作相关推荐

  1. Kotlin版 极简 干货集中营 APP

    项目地址 首先这是我的一个Kotlin练手项目,规模很小,显示干货集中营的几个分类模块,使用的还是我习惯使用的java框架,虽然遇到了一些问题,不过提高了Kotlin的熟练度,踩了一些Kotlin的坑 ...

  2. 关于代码家(干货集中营)共享知识点汇总系列——App

    关于代码家(干货集中营)共享的所有知识点App部分的汇总,后续每周会对其进行更新 更多内容请选择以下入口 关于代码家(干货集中营)共享知识点汇总系列--Android 关于代码家(干货集中营)共享知识 ...

  3. 关于干货集中营的一个开源App

    中秋佳节,玩了一天,撸了两天代码,搞出这么个东东,共享出来,小伙伴们如果有兴趣,欢迎添砖加瓦. 数据接口为干货集中营的数据,接口地址: http://gank.io/api 使用到的技术清单如下: 1 ...

  4. 《云阅2.0》一款同时看玩安卓和干货集中营资讯的App

    一.云阅2.0 <云阅>一个仿网易云音乐UI,使用Gank.Io及豆瓣Api开发的开源项目 在云阅发布第一版之后,大约经过了近两年的时间,不断的更新迭代,现在已经完成了2.0,相比第一版它 ...

  5. 关于代码家(干货集中营)共享知识点汇总系列——前端

    关于代码家(干货集中营)共享的所有知识点前端部分的汇总,后续每周会对其进行更新 更多内容请选择以下入口 关于代码家(干货集中营)共享知识点汇总系列--Android 关于代码家(干货集中营)共享知识点 ...

  6. 推荐 | 有三AI生态新的资源干货集中营,好书好工具好内容等你来淘

    微信公众号 今天给大家推荐一个微信公众号<有三言选>,是有三AI团队维护的资源干货集中营,专栏包括有三图书馆,AI好书推荐,好工具,好技术专栏,好资源,好星球,好课程以及定期举行的送书福利 ...

  7. 一个MVP+RxJava+Retrofit的干货集中营

    欢迎掘金的小伙伴们访问我的博客网站,原文链接:wensibo.top/2017/05/15/- ,未经允许不得转载! 今天想要与大家一起分享的五月份的时候用一个星期开发的一个app--干货集中营客户端 ...

  8. 如何快速制作App应用软件?国内有哪些比较好用的App制作平台?

    如今,各类App让大家像淘金似往自个儿的爱机里装,无论是Apple Store还是安卓市场,应用商店总是手机控们的发烧地.但是这类门户却满足不了满脑子想法的动手一族,可惜他们只是梦想家,却不是程序猿, ...

  9. 一款追求全新用户体验的干货集中营 iOS客户端

    Gank集中营 一款追求全新用户体验的干货集中营 iOS客户端 作者:CoderKo1o GitHub:https://github.com/iphone5solo/Gank 官网:http://ga ...

最新文章

  1. 拥抱单页网站! jQuery全屏滚动插件fullPage.js
  2. androidEditTextinputType及android:imeOptions=”actionDone”(转)
  3. SAP Spartacus 中的 Commands and queries
  4. php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结
  5. 亚马逊的vps多少钱一个月_如何查看您在亚马逊上花了多少钱
  6. 初学计算机语言者(C语言,C++,java,pytion,C#)
  7. 【docker】查看docker镜像的版本号TAG,从远程仓库拉取自己想要版本的镜像
  8. java定义一个空数组_一个 Java 方法,最多能定义多少参数?
  9. 大规模分布式深度网络
  10. android listview 获取viewholder,Android ViewHolder 的基本使用
  11. Python一周小结
  12. C++输出透明背景字体
  13. i3型3D打印机制作详解——Marlin固件中文介绍
  14. 15b万用表怎么测电容_FLUKE-15B+型数字万用表操作规程
  15. 腾讯Bugly工具介绍节选
  16. 谷歌浏览器Google如何设置站点弹出窗口
  17. URL中文编码与文本中文编码的关系
  18. spring data jdbc 基本使用
  19. java计算机毕业设计基于web旅游网站的设计与实现源程序+mysql+系统+lw文档+远程调试
  20. 解决opencv自定义dll 调用时找不到 opencv_world400d的pdb文件的问题

热门文章

  1. Flutter 中 GestureDetector 的使用误区
  2. C++下caffe使用教程
  3. 哈夫曼树【北邮机试】
  4. Minecraft正版账号获得方法
  5. CPU架构解析:ARM和x86大比拼
  6. 东昂科技冲刺深交所:年营收2.6亿 庄俊辉控制69%股权
  7. 主题和母版页(母版页)
  8. 求1-1/2+1/3-1/4+...+1/99-1/100。
  9. 实验二 matlab矩阵分析与处理
  10. 游戏社区App (三):客户端与服务端的加密处理 和 登录