Giter Club home page Giter Club logo

mvpapp's Introduction

MvpApp

练习MVP架构开发的App,算是对自己学过的知识做一个总结,做了有一段时间,界面比较多,代码量还是有的,里面做了大量封装,整体代码整理得很干净。里面有我自己封装的一些库和类,可以作为借鉴参考,有什么问题可以提出来探讨,有好的想法和修改建议也欢迎提交代码上来。
现在网易的图片接口不能用了,所以“美女”界面获取不到数据了,如果想看效果的可以试着把“福利”标签下的界面按“美女”界面的处理方式改过去,刚好可以拿来自己练手~,代码我暂时不想去改了。

Screenshot

项目结构:

应用截图:

主页

新闻主页

新闻详情

专题

栏目管理

图片新闻

图片列表

大图

下载管理

视频播放

图片动图

下载管理

用到的第三方库

  • leakcanary :检测应用内存泄漏问题,这个都知道吧
  • butterknife :帮助Android控件和回调的进行依赖注入,JakeWharton大神的力作
  • dagger2 :Android和Java依赖注入库
  • rxjava :一个实现异步操作的库,现在非常火
  • RxAndroid :用于Android的Rxjava绑定库
  • RxBinding :配合Rxjava处理控件异步调用
  • RxLifecycle :防止RxJava中subscription导致内存泄漏
  • RxPermissions :基于RxJava开发的用于帮助在Android 6.0中处理运行时权限检测
  • retrofit :目前最好用的网络通讯库,应该都用过吧
  • okhttp :okhttp和retrofit做网络通讯是绝配
  • greenDAO :ORM数据库,能配合rxjava使用
  • logger :Log库,让打印的Log变得非常漂亮
  • glide :Google出品的图片加载库,这里有非常好的指导文档:https://mrfu.me/2016/02/27/Glide_Getting_Started/
  • BaseRecyclerViewAdapterHelper :很好用的RecyclerView多功能适配器库,项目里我并没有直接用这个库,而是按我自己使用习惯在它较早的代码上做了些改动
  • recyclerview-animators :RecyclerView的动画库,内置了非常多的动画效果
  • CircleImageView :非常常用的用来显示圆形头像的库
  • PhotoView :可根据手势进行缩放的图像库,这个也很常见
  • AndroidImageSlider :展示头部Banner的库,动画效果很多,就是需要依赖picasso和nineoldandroids这两个库
  • NumberProgressBar :性感的数字进度条
  • FlycoTabLayout :样式比TabLayout多样的Tab库
  • FlycoDialog :多功能的Dialog
  • FlycoLabelView :添加角标的库
  • gson :帮助Json和Object转换,这个也常用
  • ijkplayer :B站出品的视频解码库
  • DanmakuFlameMaster :同样B站出品的弹幕库
  • ShineButton :炫酷效果的点击按钮,主要用于显示收藏之类的动画
  • RichText :富文本的处理库,用起来挺方便就是有内存泄漏- -
  • Android-SpinKit :集成多种动画效果的Drawable,之前有看源码觉得代码封装得挺好,动画不仅仅只能用在View上
  • filepicker :这个是用来处理PreferenceScreen的文件选中库,PreferenceScreen感觉平时不怎么看到使用,用法到时挺特别
  • tinker :微信Android热补丁方案,功能强大,和其它热修补方案对比看这里wiki
  • DragSlopLayout :一个辅助开发拖拽功能的库,这是我为了做这个App的某些功能封装的库- -,现在倒也有用在工作的项目上
  • IjkPlayerView :基于ijkplayer开发的播放器,也是为了做这个App的视频播放功能封装的库- -,里面加了弹幕功能,感兴趣可以看下
  • TagLayout :标签库,可做为自定义按钮来使用

Thanks

  • 感谢所有优秀的开源项目
  • OuNews :最初是看了这个项目才开始做的,学了不少东西

Statement

该项目仅供交流学习使用,如有侵犯版权问题,可通知本人及时删除

mvpapp's People

Contributors

rukey7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mvpapp's Issues

文件缺失

com.dl7.mvp.local.table.NewsTypeInfoDao;
com.dl7.mvp.local.table.DaoSession;

点击视频报错了

Tinker.UncaughtHandler: catch exception when loading tinker:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.dl7.mvp-1/base.apk"],

代码问题

为什么下载下来的代码 里面好多东西都不见了,到处报错

这是一件艺术品

大佬,看了你这个项目。突然发现 你写的就是我一直苦苦追求的。。代码结构清晰,该有的注释都有。之前我一直是用mvc的。一个activity挤满了业务处理的逻辑。封装性,代码冗余更差。维护起来也不容易。都说现在android不好找工作。假如能有你这个技术,我找1.2w 绝对不成问题,更别说怕找不到工作。。。这样的代码功底,无论是android,还是java后台 还是其他的编程语言。。这样的代码风格 我给满分。看你这个项目 我找到自己今年的奋斗目标。真的是不能用语言来表达我对你的感激。给一个联系方式。我要拜师

导入AS报错请大佬指教。。。

Error:(1, 0) Cause: startup failed:
build file 'D:\360WiFi\2_20download\MvpApp-master\MvpApp-master\build.gradle': 1: Invalid variable name. Must start with a letter but was: 
. At [1:1] @ line 1, column 1.
// Top-level build file where you can add configuration options common to all sub-projects/modules.
^

1 error

Open File

缺少类文件

com.dl7.mvp.injector.components.DaggerApplicationComponent;
com.dl7.mvp.local.table.DaoMaster;
com.dl7.mvp.local.table.DaoSession;
这几个类都没有上传~~

敢问数据源从哪儿来,到哪儿去?

UP主你好,因为看到你的项目是新闻阅读类、图片类的项目,因此想向你了解一下:

1.你的数据源是从哪里来的??爬虫扒的 or 其他?
2.针对下载使用者的数据操作,最终保存到哪了??是自编后端业务代码 or 用第三方的云存储服务 or 其他?

希望得到解答,先谢。

频繁出现网络异常

新闻界面 任一栏目 下拉刷新大概5.6次就会出现网络异常 不知是什么原因哎

新闻403

在新闻列表不断下拉刷新,有时会出现服务器403状态。
这时点击空白处可以进入详情。

fail

Error:A problem occurred configuring root project 'MvpApp-master'.

Could not resolve all dependencies for configuration ':classpath'.
Could not find com.tencent.tinker:tinker-patch-gradle-plugin:1.7.7.
Searched in the following locations:
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.pom
file:/Applications/Android Studio.app/Contents/gradle/m2repository/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.jar
https://jcenter.bintray.com/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.pom
https://jcenter.bintray.com/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.jar
https://repo1.maven.org/maven2/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.pom
https://repo1.maven.org/maven2/com/tencent/tinker/tinker-patch-gradle-plugin/1.7.7/tinker-patch-gradle-plugin-1.7.7.jar
Required by:
:MvpApp-master:unspecified

加载视图的bug

出现网络错误时加载视图点击空白区域还能响应点击事件, 能进入recycle中的item中去 ,出现错误页面应该禁用item的点击事件

Fragment 有重叠现象

进入到一个 Fragment,比如图片-生活,再按 Home 键切出页面,过一段时间返回,会出现主页面和图片-生活重叠的现象。

系统:Android 6.0.1

视频点进去报错

catchexceptionwhenloadingtinker:java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zipfile"/data/app/com.dl7.mvp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.dl7.mvp-1/lib/arm64,/data/app/com.dl7.mvp-1/base.apk!/lib/arm64-v8a,/vendor/lib64,/system/lib64]]]couldn'tfind"libijkffmpeg.so"
atjava.lang.Runtime.loadLibrary(Runtime.java:367)
atjava.lang.System.loadLibrary(System.java:1076)
attv.danmaku.ijk.media.player.IjkMediaPlayer$1.loadLibrary(IjkMediaPlayer.java:163)
attv.danmaku.ijk.media.player.IjkMediaPlayer.loadLibrariesOnce(IjkMediaPlayer.java:174)
atcom.dl7.player.media.IjkPlayerView._initMediaPlayer(IjkPlayerView.java:306)
atcom.dl7.player.media.IjkPlayerView.init(IjkPlayerView.java:464)
atcom.dl7.mvp.module.video.player.VideoPlayerActivity.initViews(VideoPlayerActivity.java:102)
atcom.dl7.mvp.module.base.BaseActivity.onCreate(BaseActivity.java:73)
atandroid.app.Activity.performCreate(Activity.java:6323)
atandroid.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
atandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2385)
atandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2492)
atandroid.app.ActivityThread.access$900(ActivityThread.java:153)
atandroid.app.ActivityThread$H.handleMessage(ActivityThread.java:1358)
atandroid.os.Handler.dispatchMessage(Handler.java:102)
atandroid.os.Looper.loop(Looper.java:148)
atandroid.app.ActivityThread.main(ActivityThread.java:5458)
atjava.lang.reflect.Method.invoke(NativeMethod)
atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
atcom.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

Failed to sync Gradle project 'MvpApp'

Required by:
MvpApp:app:unspecified
MvpApp:app:unspecified > com.github.Rukey7:TagLayout:1.0.3
MvpApp:app:unspecified > MvpApp:RecyclerViewHelper:unspecified
MvpApp:app:unspecified > MvpApp:downloaderLib:unspecified
MvpApp:app:unspecified > MvpApp:playerview:unspecified
MvpApp:app:unspecified > MvpApp:tinkerLib:unspecified

Please install the Android Support Repository from the Android SDK Manager.
Open Android SDK Manager

好像是没有指定远程仓库,或者指定错了,仓库里找不到依赖的工程,求解。已经安装过了 Android Support Repository

内存泄漏

直接通过inject注入mPresenter,baseActivity没有处理,这个存在内存泄漏的问题吧

导入时tinker报错

Error:(14, 0) Could not get unknown property 'TINKER_VERSION' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

classpath "com.tencent.tinker:tinker-patch-gradle-plugin:${TINKER_VERSION}"这句话

crash

Process: com.dl7.mvp, PID: 16829
java.lang.RuntimeException: Unable to destroy activity {com.dl7.mvp/com.dl7.mvp.module.photo.bigphoto.BigPhotoActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3521)
at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3539)
at android.app.ActivityThread.access$1400(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1249)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5045)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException

点击美女图片的时候报错了

dagger2

p层引用可以注入到base V 我看写了很多 代码重复,量太大了

视频播放闪退错误这样修复

这样解决在buildgradle中的defaultConfig中添加 ndk {
abiFilters "armeabi", "armeabi-v7a", "x86", "mips"
}并在gradle.properties中添加android.useDeprecatedNdk=true就可以了

libijkffmpeg.so没有提交

点击视频崩溃,在项目里找不到libijkffmpeg.so库文件,你没有提交。试着找了个libijkffmpeg.so加进去,报jni错误,麻烦提交下哦,thx。

播放视频时点击后应用直接奔溃了,好像是说少了个so库

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.dl7.mvp-1/base.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_dependencies_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_0_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_1_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_2_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_3_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_4_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_5_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_6_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_7_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_8_apk.apk", zip file "/data/app/com.dl7.mvp-1/split_lib_slice_9_apk.apk"],nativeLibraryDirectories=[/data/app/com.dl7.mvp-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libijkffmpeg.so"

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.