前言:

这是我2016年3月开始写的,利用课余时间全心投入的项目,本以为是凭着轻松愉悦的方式来学习的,中途遇到bug解决bug的时候,每天晚上几乎都是写到寝室关灯,还有一次使用Github不当写了五天的代码一夜恢复到解放前,现在每次Commit都会把项目复制一份,项目使用OC写的,主要是想记录下OC项目整个过程,在过渡学习Swift,写的还不完善,不足之处还请见谅,由于时间比较匆忙,这个月还剩下十来天忙着考试,4月份会把后续功能实现,这是第一次把以项目的形式分享到博客。

项目描述(附源代码底部):

开源项目为36氪,一款提供股权类互联网金融平台APP,项目为纯代码,XIB+代码开发,所有的数据都是通过Charles抓包工具获取到的, 图片通过Extractor解压得到(部分图片找不到),视频播放器是通过36氪开源播放器(采用View+MPMoviePlayerViewController)改进的播放器使用的是View + AVPlayer,支持播放mp4、mov等格式,网络和本地视频同时支持,支持Cell中全屏和小屏自动感应旋转屏幕,参考WMPlayer,无需第三方库支持。

效果图:

首页效果

侧滑效果

其他模块首页效果

氪TV首页效果

新闻内容页效果

轮播页内容效果

评论页效果

搜索页效果

离线缓存

项目当中用到的缓存方式是JSON数据以文件的形式保存,因为要放到文件当中存储,所以在这里JSON要经过一定的转化,如果不经转化取出来的字典数组是为空的,我的方式是这样的,具体可以参考HttpRequest文件和NewsVC

保存的过程:NSDate->NSString

取出过程 NSString->JSON对象序列化-》(字典数组)NSArray->模型数组(NSSArray)

值得注意点:

数据解析:[{}]格式 使用 字典数组 -> 模型数组 ,{} 字典 转一个模型

AVPlayer:可以通过videoGravity有三种形式设置播放形AVLayerVideoGravityResizeAspect,AVLayerVideoGravityResizeAspectFill,和AVLayerVideoGravityResize。默认的是AVLayerVideoGravityResizeAspect:会出现顶部和底部分别有20大小的间隙,AVLayerVideoGravityResize(项目当中用到的):拉伸,以填补CALayer的界限AVLayerVideoGravityResizeAspectFill:保留长宽比;填补CALayer的界限。

解决网速慢的问题:(用寝室CMCC播放视频的时候会出现视频停止的效果,需要再次点击才可以继续播放,在卡在点的情况),我的解决办法是这样的,通过判断当前时间和播放时间进行比较,如果一致则出现停顿情况,具体可以详见项目

讨论页Cell自适应:我的思路是这样的,首先cell先计算好文本高度,然后将高度的值赋给heightLabel(用于保存每个cell的高度),控制器在从heightLabel取出(这样减少一次在heightForRowAtIndexPath方法在计算一次高度)

新闻内容页:顶部用户简介是一个cell,新闻内容页是一个经过嵌套webView的cell

ESJsonFormat-Xcode在开发中用到这个工具,所以文件命名的时候不规范,还请见谅

希望顺便点一下右上角的⭐️Star ,朋友的鼓励和支持是我继续分享的动力

github地址仿36氪 源文件地址

视频播放器:源文件地址

android仿36氪轮播,仿36氪(附源代码)相关推荐

  1. ViewFlipper实现文字轮播(仿淘宝头条垂直滚动广告)

    ViewFlipper实现文字轮播(仿淘宝头条垂直滚动广告) 广告条目可以单独写成布局文件,然后在布局文件或者代码中添加到总布局中 从源码可以看出,其实ViewFlipper间接的继承了FrameLa ...

  2. Android 视频图片 轮播,详解android 视频图片混合轮播实现

    循环添加视频view  图片view for (int i = 0 ;i if (beansarraylist.get(i).gettype()==1){ videoplayer = new nice ...

  3. android 3d布局轮播,android 图片/视频混合轮播控件banner

    android 图片/视频混合轮播控件banner 在youth5201314的图片轮播控件做的修改 原作者github地址:https://github.com/youth5201314/banne ...

  4. android设计轮播功能按钮,Android TV HorizontalScrollView 图片轮播 遥控器上下按键的处理...

    当前位置:我的异常网» Android » Android TV HorizontalScrollView 图片轮播 遥控器 Android TV HorizontalScrollView 图片轮播 ...

  5. 用JavaScript实现网页无限轮播图效果,附整套源码

    用JavaScript实现无限轮播图效果(附源码) javascript群内每日课题-今日课题:用JavaScript实现无限轮播图效果 PS:很多企业通用的案例自己再学习过程中肯定是要熟练的,所以今 ...

  6. android 广告效果图,android 仿首页广告轮播效果

    1.我们经常打开一个App会看到有广告图片轮播的效果,首先上效果图1.我们经常打开一个App会看到有广告图片轮播的效果,首先上效果图2.实现的过程1.轮播页面他是一 1.我们经常打开一个App会看到有 ...

  7. Android 实现图片轮播(仿淘宝首页商品轮播展示)

    一  引用依赖 // 图片轮播图implementation 'com.github.dongjunkun:BannerLayout:1.0.6' 二 创建图片加载工具类 public class G ...

  8. android开发 listview 头部 轮播,listview添加的头部布局超过一屏头部内容显示不全...

    headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...

  9. android 图片轮播组件,Android客户端实现图片轮播控件

    本文和大家一起写一个Android图片轮播控件,供大家参考,具体内容如下 1. 轮播控件的组成部分 我们以知乎日报Android客户端的轮播控件为例,分析一下轮播控件的主要组成: 首先我们要有用来显示 ...

最新文章

  1. php 一秒操作一次_php守护进程 加linux命令nohup实现任务每秒执行一次
  2. hashcode相等的两个对象一定相等吗_为什么重写 equals方法时一定要重写hashCode方法?...
  3. 探究实现中断下半部分的第四种方式
  4. C++演示std :: sort(),std :: reverse()的函数(附完整源码)
  5. PHP图片内容以二进制数据流的形式发送(CurlFile使用)
  6. springboot多数据源使用EntityManager
  7. 一步一步学动画[1]:Silverlight中Animation的应用
  8. 我这满目疮痍的2020年
  9. oracle恢复指定数据文件,Oracle特殊恢复-BBED修改某个数据文件头
  10. 解决 error: command 'swig' failed with exit status 1
  11. Python中的json.dumps()和json.loads()函数
  12. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3)(1)
  13. vs2010 C# 如何将类做成DLL 再从另一个项目中使用这个类
  14. js函数传参——参数与arguments对象
  15. 学计算机数理化不好怎么办,数理化不好怎么办?3招教你学好数理化!
  16. Google Earth导入GPS设备NMEA文本数据
  17. ​防火墙国标正式实施|美创科技解读数据库防火墙关键能力
  18. 数据分析与爬虫实战视频——学习笔记(二)(千图网图片爬虫、fiddler抓包分析、腾讯视频评论爬虫、多线程爬虫(糗百))
  19. 【Linux】区分Ubuntu桌面版本和服务器版本
  20. WindowsForm 入门

热门文章

  1. 魅族u20怎么刷Android,魅族魅蓝U20怎么刷机
  2. Google翻译问题之——Cloud Translation API has not been used in project x before or it is disabled.
  3. 网站ICP备案是什么意思?和公安备案有什么区别?
  4. D - Dragon Balls Kattis - dragonballs
  5. 如何搭建Java平台
  6. 高端大气上档次Ergotron Neo-Flex+MBP Retina的组合~
  7. 半导体显示|LG显示器宣布在韩国投资26亿美元 生产OLED面板
  8. Day12 学习分享 - 面向对象
  9. 联发科和麒麟哪个比较好
  10. 安卓开发(2):基本UI界面设计