老规矩,看效果

介绍
Gank平台的移动端又来了,非常感谢Gank平台开放接口,让我们这些小白有机会练手、学习。
本项目在架构方面有稍微花点心思,虽然还是最简单的MVC模式,但基本参考MVP的思想,Activity只负责ui显示逻辑,ui和业务会尽量的分离开,每个包的类权限严格控制,尽量对外部隐藏其实现细节。另外,本项目不像其他热门的Gank客户端那样使用诸如Rx系列的高级开源库,代码应该是可以很容易看懂的,吧。哈哈,有兴趣的可以fork看看,有什么问题可以联系我哈。
以下是项目所依赖的第三方库:
- Retrofit + Okhttp (网络访问)
- Gson (Json数据解析)
- Glide (图片加载)
- photoview (支持手势缩放的图片查看)
- Jsoup (Html解析)
项目
下图是项目的代码结构图,我分成mode层和ui层,让ui与业务逻辑尽可能解耦,感兴趣的clone项目看看哈,架构方面才刚接触,很多地方考虑不周到,欢迎指点一下哈。过段时间,我会单独写篇博客来介绍项目的架构设计方面的一些想法。

如果有clone项目的童鞋,出现了编译失败的问题,可以参考下本项目的开发环境哈:
- Android Studio: 2.2.3
- Gradle Version: 2.14.1
- Android Plugin Version: 2.2.3 (根目录build.gradle里gradle的版本)
- compileSdkVersion: 25
- buildToolsVersion: "25.0.2"
以上设置在两个build.gradle里都可以找到。
如果把代码下载到本地编译报错的话,有可能是因为gradle的版本不一致,也有可能是因为Android SDK的版本问题,如果有报错的童鞋试着在这几个地方查查看哈。
效果
效果只展示了部分效果,感兴趣的可以去我Github看看更详细的,或者是下载下来试试看哈。

App下载

鸣谢

最近刚开通了公众号,想激励自己坚持写作下去,初期主要分享原创的Android或Android-Tv方面的小知识,感兴趣的可以点一波关注,谢谢支持~~
网友评论
/**
* Created by suxq on 2018/3/27.
* 懒加载
* {@link #onFragmentFirstVisible() Fragment第一次可见时回调}
* {@link #onFragmentVisibleChange(boolean) Fragment可见状态发生变化时回调}
* ps:Fragment第一次可见时,上述两个方法都会回调,后续就只有第二个会被回调
*/
public class BaseFragment extends Fragment {
private boolean isFirstVisible = true;
protected boolean isFragmentVisible = false;
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (getView() == null) {
return;
}
if (isFirstVisible && isVisibleToUser) {
onFragmentFirstVisible();
isFirstVisible = false;
}
if (isFragmentVisible ^ isVisibleToUser) {
onFragmentVisibleChange(isVisibleToUser);
isFragmentVisible = isVisibleToUser;
}
}
@Override
public void onViewCreated(View view, @nullable Bundle savedInstanceState) {
if (getUserVisibleHint()) {
if (isFirstVisible) {
onFragmentFirstVisible();
onFragmentVisibleChange(true);
isFirstVisible = false;
isFragmentVisible = true;
}
}
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onDestroyView() {
super.onDestroyView();
isFirstVisible = true;
isFragmentVisible = false;
}
protected void onFragmentFirstVisible() {
}
protected void onFragmentVisibleChange(boolean isVisible) {
}
}
https://github.com/JakeWharton/Telecine
googleplay可下载