Android 开发总结

忙碌的一个月终于结束了,因为老板觉得我天天在公司就负责扫地,有点物过其用。就让我接手了一个同事离职的安卓代码。因为这个属于外包吧,有明确的时间要求,所以就只能天天加班来实现。 不过,在实现的过程中,确实找到了一些共性的东西。这边拿出来分享下。 选用的设计模式 MVP 首先就是安卓项目的代码划分。之前的说法,都是MVC式的划分方式,所以会出现一个问题。Activity 中代码杂糅。所以之后就出现了 MVP 的设计模式,也... [阅读全文]

MBanner2 项目(二) --- 编写可测试的代码、实例展示

接上篇的项目基本设计,这次主要是来说具体的实现。 编写可测试的代码 不管在之前的 MBanner 1.0 分支的版本中,还是在借鉴的 QingtingBannerView 中,测试这个环节始终是遗漏的一点。毕竟都是程序员,很少会进行测试驱动开发。所以这次为了解决这个问题,我这边采用了 Junit 进行了部分的代码测试。也是一种测试驱动开发的尝试吧。 具体以具体的代码为例【MBannerLine.java】: 在 ... [阅读全文]

MBanner2 项目(一) --- 基本设计

写这篇文章的一个出发点就是,对自己的 第一版本 非常的不满意,很多地方的解决思路不够优雅。换句话说就是基于 lib 的二次自定义非常麻烦。 所以才会开启 2.0 版本的开发(反正用的人也不会多,但是我比较喜欢抠细节)。 自定义程度不高主要体现在三方面: PagerViewAdapter 实现方式为 class,并不是接口,导致无法自定义 Adapter,从而绝了换 view 的路。 PageIndic... [阅读全文]

MBanner 介绍

最近做了一个安卓项目,因为有个部分是需要实现一个可以展示标题和图片的 AD Banner。所以就同性交友网上(github)上找了一些案例。 作为一个安卓初学者,所以一开始就选用了 star 最多的那个。效果也很好,但是对方提出了一个需求,就是希望在图片上显示标题。做一个类似的蜻蜓上面的 Banner 效果。所以,就搜索到了 QingTingBannerView 这个项目。 这个项目的 star 数非常高。所以一开始认为是挺... [阅读全文]

在 Dingo/Api 中实现自定义错误回复

目前在用 Laravel 做一个 APP 后台的开发。因为都是 API,所以需要定义个通用的通信协议。这个比较好解决,而且我之前的思路也都有,具体可以看这篇:设计自认为优雅的接口(上)。这里就不再废话了。 考虑到之后的通用性和可维护性,我们决定使用 Dingo/Api 这个插件进行 API 的管理,开发。所以,理所当然的遇到了这么一个应用场景。 这是使用 Dingo/Api 之后,标准的返回值: url: http://w... [阅读全文]

关于Clash of Clans不下线脚本

Clash Of Clans俗称部落战争,AKA COC。不得不说这是一个非常好玩的游戏,也是我除愤怒的小鸟之后最喜欢玩的一个游戏。 好了,介绍了部落战争的背景,开始描述写这个脚本的原因,起因就是,作为一个七本,我需要抢黑水生王,然后好不容易打到8500+,然后被偷到了8000-,心痛啊。于是开始想怎么才能不下线,一开始的想法很简单,就是隔个几分钟手去摸一下屏幕。太二了... 阅读全文>> [阅读全文]

Java与C通过管道进行交互

最近的一个项目需要使用到Java和C通信的,因为是在安卓上,所以我们能使用的方法有限(安卓上只支持部分Java,还有C也是精简的库)。 当然,使用本地Socket是一个简答你的解决办法。但是不是特别的优美。于是,我们准备使用Linux上使用的最多的管道进行通信。 之前查阅了一些资料,因为大部分网络上介绍Java管道的都是Java中的PipedStream,这个确实是管道类,但是很可...阅读全文>> [阅读全文]

Android上编译Native C代码

首先,我们不得不提到一个我们在Java程序开发中常使用的JNI模式, 这个模式后来也被Google采用,也能在Android下使用了,但是使用NDK的方式, 写出一个共享so库,然后使用Java JNI技术进行调用。这个方法在编写一些根本不需要 界面的程序时,就显得无比的蛋疼。 所以这边我们介绍一个简单的办法,即编写一个native的本地C程序,直接运行在Android De...阅读全文>> [阅读全文]

Android自定义控件

最近网上下了一个关于解码h264的demo,然后自己进行了一些改进,中途有一个问题,就是对方使用的是直接在onCreate()中setContentView();然后整个界面只有那么一个控件,觉得很不合适,于是想改,将其封装到一个View中。但是一开始就出现了问题,什么xml的错误,和nosuchmethod等等,于是开始实验,最后发现,在View的构造函数中添加:public VView(Con...阅读全文>> [阅读全文]