[译]重构源代码构建 Android TV 开发手册十四

235 阅读3分钟

版权声明:本文为博主原创翻译文章,转载请注明出处。

推荐: 欢迎关注我创建的Android TV 简书专题,会定期给大家分享一些AndroidTv相关的内容: www.jianshu.com/c/37efc6e97…


###重构

通过本教程,我已经解释了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上找到。 关注微信公众号,定期为你推荐移动开发相关文章。

songwenju