[译]重构源代码构建--Android TV 开发手册十四
版权声明:本文为博主原创翻译文章,转载请注明出处。
推荐:
欢迎关注我创建的Android TV 简书专题,会定期给大家分享一些AndroidTv相关的内容:
http://www.jianshu.com/c/37efc6e9799b
重构
通过本教程,我已经解释了Android TV特定的UI实现(从Android TV示例应用程序引用的示例源代码)。 所以我通过重组源代码文件来总结这个项目。 我根据每个类的作用进行了重构,并完成了下面的结构。
- com.corochann.androidtvapptutorial
-
common-共同模块。 此模块不依赖于此应用程序的具体实现,以便您可以在其他项目中重新使用的代码。
- PlaybackController
- utils的
-
data - “模型”的数据集
- MovieProvider
-
model - MVP架构的“模型”部分
- Movie
-
recommendation - 推荐功能部分
- RecommendationBuilder
- RecommendationFactory
-
ui - UI处理模块(活动和片段)
-
MainActivity&MainFragment
-
DetailsActivity & VideoDetailsFragment
-
PlaybackOverlayActivity&PlaybackOverlayFragment
-
SearchActivity&SearchFragment
-
-
ErrorActivity&ErrorFragment
-
GuidedStepActivity
-
presenter -MVP架构的Presenter部分
- CardPresenter
- (GridItemPresenter) 它在MainFragment中定义,但也可以移动到这里。
- DescriptionPresenter
- DetailsDescriptionPresenter
-
view - MVP架构的View部分
- 本教程中没有任何内容。 定制设计视图来到这个地方。 例如,如果没有由Leanback支持库提供,ImageCardView将放置在此处。
-
- background- 处理背景的模块。 它也是一个常用的模块。
- SimpleBackgroundManager
PicassoBackgroundManager
下面我继续补充说明。
UI处理模块
起初我想区分处理UI的部分。 更新UI的模块如下,
- ~Activity - 构成当前Activity的主要组成部分。
- ~Fragment - Fragment通过填充特定的子组件来支持Activity的UI。
- ~Presenter - Presenter定义如何显示具体的“item”,稍后将对此进行详细介绍。
让我们在这个包里面添加新的包“ui”并替换上面的内容。 可以通过右键单击软件包名称→新建→软件包→键入“ui”。 然后,新的文件夹“ui”出现在您的Android studio中。
Model-View-Presenter(MVP)架构模式
通过本教程,我们使用Movie类作为一个项目来显示,并且我们使用ImageCardView显示其实例。 它由介质CardPresenter实现,它指定如何将此Movie实例显示到ImageCardView 。
这种架构叫做Model-View-Presenter(MVP)架构模式。 模型是将其处理为“Object”的项目的定义,它是面向对象编程的基础,View是显示此项目的实际UI,Presenter是Model和View的中间体。
在我们的例子中,我们可以写这个对应。
Model | String | Movie |
---|---|---|
View | TextView | ImageCardView |
Presenter | GridItemPresenter | CardPresenter |
如果您有Web应用程序开发经验,您可能会提醒模型 - 视图 - 控制器(MVC)模式(特别是在rails开发ruby的人员)。 以下是MVC和MVP之间的比较
MVC
mvc
MVP
testing_methodologies_mvp.png
引自http://www.gwtproject.org/articles/testing_methodologies_using_gwt.html
每个模块的Model,View和Presenter在重构后分成每个模块。 我把View和Presenter放在“ui”包中,因为它正在改变UI。
参考
Model–view–presenter
Model-View-Presenter(MVP)模式
GUI设计模式
Android TV:ObjectAdapter,Presenter ( 英文 )
本教程的结论
到目前为止,我已经解释了Leanback支持库,这使得我们的Android TV应用程序的UI设计更容易,更简单。 我会说这不是一个简短的教程,但现在几乎所有的Android TV特定UI设计(直到API级别22)都被覆盖了! 我希望您获得Android TV应用程序开发的基础知识,并且您不会失去开始开发自己的设计应用程序的方法。
源代码可以在github上找到。
关注微信公众号,定期为你推荐移动开发相关文章。