Browse Source

重新梳理视频播放器

yangchong 6 years ago
parent
commit
d5fb6abfd9
100 changed files with 926 additions and 5568 deletions
  1. BIN
      .idea/caches/build_file_checksums.ser
  2. 0 29
      .idea/codeStyles/Project.xml
  3. 4 0
      .idea/encodings.xml
  4. 0 78
      .idea/markdown-navigator.xml
  5. 0 3
      .idea/markdown-navigator/profiles_settings.xml
  6. 0 38
      .idea/misc.xml
  7. 1 1
      .idea/modules.xml
  8. 18 1
      README.md
  9. 0 1
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/constant/ConstantKeys.java
  10. 3 2
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/controller/AbsVideoPlayerController.java
  11. 73 29
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/controller/VideoPlayerController.java
  12. 5 6
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/inter/listener/OnSurfaceListener.java
  13. 60 0
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/inter/listener/OnTextureListener.java
  14. 13 1
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/manager/VideoPlayerManager.java
  15. 22 11
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/player/VideoPlayer.java
  16. 235 0
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/view/VideoSurfaceView.java
  17. 24 19
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/view/VideoTextureView.java
  18. 4 4
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/window/FloatPhone.java
  19. 3 2
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/window/FloatPlayerView.java
  20. 2 1
      YCVideoPlayerLib/src/main/res/layout/custom_video_player_top.xml
  21. 3 47
      app/build.gradle
  22. 11 31
      app/src/main/AndroidManifest.xml
  23. 2 28
      app/src/main/java/org/yczbj/ycvideoplayer/BaseActivity.java
  24. 1 19
      app/src/main/java/org/yczbj/ycvideoplayer/BaseApplication.java
  25. 4 3
      app/src/main/java/org/yczbj/ycvideoplayer/ConstantVideo.java
  26. 4 4
      app/src/main/java/org/yczbj/ycvideoplayer/HomeKeyWatcher.java
  27. 87 0
      app/src/main/java/org/yczbj/ycvideoplayer/ImageUtil.java
  28. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/LogUtils.java
  29. 170 0
      app/src/main/java/org/yczbj/ycvideoplayer/MainActivity.java
  30. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ScreenDensityUtils.java
  31. 26 26
      app/src/main/java/org/yczbj/ycvideoplayer/TestClarityActivity.java
  32. 4 11
      app/src/main/java/org/yczbj/ycvideoplayer/TestEightVideoActivity.java
  33. 4 7
      app/src/main/java/org/yczbj/ycvideoplayer/TestFragment.java
  34. 7 7
      app/src/main/java/org/yczbj/ycvideoplayer/TestFragmentActivity.java
  35. 24 24
      app/src/main/java/org/yczbj/ycvideoplayer/TestFullActivity.java
  36. 7 7
      app/src/main/java/org/yczbj/ycvideoplayer/TestListActivity.java
  37. 20 23
      app/src/main/java/org/yczbj/ycvideoplayer/TestListFragment.java
  38. 8 21
      app/src/main/java/org/yczbj/ycvideoplayer/TestNormalActivity.java
  39. 5 11
      app/src/main/java/org/yczbj/ycvideoplayer/TestRecyclerActivity.java
  40. 20 19
      app/src/main/java/org/yczbj/ycvideoplayer/TestTinyActivity.java
  41. 17 22
      app/src/main/java/org/yczbj/ycvideoplayer/TestWindowActivity.java
  42. 28 0
      app/src/main/java/org/yczbj/ycvideoplayer/Video.java
  43. 5 8
      app/src/main/java/org/yczbj/ycvideoplayer/VideoAdapter.java
  44. 0 47
      app/src/main/java/org/yczbj/ycvideoplayer/api/constant/Constant.java
  45. 0 62
      app/src/main/java/org/yczbj/ycvideoplayer/api/http/news/NewsApi.java
  46. 0 44
      app/src/main/java/org/yczbj/ycvideoplayer/api/http/news/NewsModel.java
  47. 0 158
      app/src/main/java/org/yczbj/ycvideoplayer/api/http/utils/InterceptorUtils.java
  48. 0 32
      app/src/main/java/org/yczbj/ycvideoplayer/api/http/video/VideoApi.java
  49. 0 43
      app/src/main/java/org/yczbj/ycvideoplayer/api/http/video/VideoModel.java
  50. 0 185
      app/src/main/java/org/yczbj/ycvideoplayer/api/manager/RetrofitWrapper.java
  51. 0 55
      app/src/main/java/org/yczbj/ycvideoplayer/base/BaseConfig.java
  52. 0 79
      app/src/main/java/org/yczbj/ycvideoplayer/base/BaseDelegateAdapter.java
  53. 0 28
      app/src/main/java/org/yczbj/ycvideoplayer/base/BaseDialog.java
  54. 0 86
      app/src/main/java/org/yczbj/ycvideoplayer/base/BaseFragmentFactory.java
  55. 0 78
      app/src/main/java/org/yczbj/ycvideoplayer/base/BaseLifecycleCallback.java
  56. 0 76
      app/src/main/java/org/yczbj/ycvideoplayer/base/BasePagerAdapter.java
  57. 0 128
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseFragment.java
  58. 0 72
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseLazyFragment.java
  59. 0 18
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BasePresenter.java
  60. 0 15
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseView.java
  61. 0 132
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList1Fragment.java
  62. 0 134
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList2Fragment.java
  63. 0 110
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPActivity.java
  64. 0 65
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPFragment.java
  65. 0 100
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPLazyFragment.java
  66. 0 49
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBaseListView.java
  67. 0 15
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBasePresenter.java
  68. 0 32
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBaseView.java
  69. 0 76
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/RxBus.java
  70. 0 10
      app/src/main/java/org/yczbj/ycvideoplayer/listener/OnItemLongClickListener.java
  71. 0 10
      app/src/main/java/org/yczbj/ycvideoplayer/listener/OnListItemClickListener.java
  72. 0 42
      app/src/main/java/org/yczbj/ycvideoplayer/listener/OnLoadMoreListener.java
  73. 0 5
      app/src/main/java/org/yczbj/ycvideoplayer/model/LoadingBean.java
  74. 0 6
      app/src/main/java/org/yczbj/ycvideoplayer/model/LoadingEndBean.java
  75. 0 31
      app/src/main/java/org/yczbj/ycvideoplayer/model/bean/TabEntity.java
  76. 0 34
      app/src/main/java/org/yczbj/ycvideoplayer/model/binder/LoadingEndViewBinder.java
  77. 0 51
      app/src/main/java/org/yczbj/ycvideoplayer/model/binder/LoadingViewBinder.java
  78. 0 27
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/HomeContract.java
  79. 0 36
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/VideoPlayerJzContract.java
  80. 0 36
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/VideoPlayerMeContract.java
  81. 0 61
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/DialogListBean.java
  82. 0 58
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/VideoPlayerComment.java
  83. 0 48
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/VideoPlayerFavorite.java
  84. 0 48
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/HomePresenter.java
  85. 0 68
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/VideoPlayerJzPresenter.java
  86. 0 78
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/VideoPlayerMePresenter.java
  87. 0 34
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/EmptyActivity.java
  88. 0 363
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/VideoPlayerJzActivity.java
  89. 0 53
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/BannerPagerAdapter.java
  90. 0 117
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/DialogListAdapter.java
  91. 0 35
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/NarrowImageAdapter.java
  92. 0 44
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/VideoPlayerMeAdapter.java
  93. 0 649
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/fragment/HomeFragment.java
  94. 0 37
      app/src/main/java/org/yczbj/ycvideoplayer/ui/main/contract/MainContract.java
  95. 0 78
      app/src/main/java/org/yczbj/ycvideoplayer/ui/main/presenter/MainPresenter.java
  96. 0 305
      app/src/main/java/org/yczbj/ycvideoplayer/ui/main/view/activity/MainActivity.java
  97. 0 48
      app/src/main/java/org/yczbj/ycvideoplayer/ui/news/contract/INewsArticle.java
  98. 0 448
      app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/bean/NewsCommentBean.java
  99. 0 129
      app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/binder/NewsArticleImgViewBinder.java
  100. 0 114
      app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/binder/NewsArticleTextViewBinder.java

BIN
.idea/caches/build_file_checksums.ser


+ 0 - 29
.idea/codeStyles/Project.xml

@@ -1,29 +0,0 @@
-<component name="ProjectCodeStyleConfiguration">
-  <code_scheme name="Project" version="173">
-    <Objective-C-extensions>
-      <file>
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Import" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Macro" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Typedef" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Enum" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Constant" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Global" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Struct" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="FunctionPredecl" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Function" />
-      </file>
-      <class>
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Property" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="Synthesize" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InitMethod" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="StaticMethod" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="InstanceMethod" />
-        <option name="com.jetbrains.cidr.lang.util.OCDeclarationKind" value="DeallocMethod" />
-      </class>
-      <extensions>
-        <pair source="cpp" header="h" fileNamingConvention="NONE" />
-        <pair source="c" header="h" fileNamingConvention="NONE" />
-      </extensions>
-    </Objective-C-extensions>
-  </code_scheme>
-</component>

+ 4 - 0
.idea/encodings.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="Encoding" addBOMForNewFiles="with NO BOM" />
+</project>

+ 0 - 78
.idea/markdown-navigator.xml

@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="MarkdownProjectSettings" wasCopied="true">
-    <PreviewSettings splitEditorLayout="SPLIT" splitEditorPreview="PREVIEW" useGrayscaleRendering="false" zoomFactor="1.0" maxImageWidth="0" showGitHubPageIfSynced="false" allowBrowsingInPreview="false" synchronizePreviewPosition="true" highlightPreviewType="NONE" highlightFadeOut="5" highlightOnTyping="true" synchronizeSourcePosition="true" verticallyAlignSourceAndPreviewSyncPosition="true" showSearchHighlightsInPreview="false" showSelectionInPreview="true" openRemoteLinks="true" replaceUnicodeEmoji="false" lastLayoutSetsDefault="false">
-      <PanelProvider>
-        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.panel" providerName="Default - Swing" />
-      </PanelProvider>
-    </PreviewSettings>
-    <ParserSettings gitHubSyntaxChange="false" emojiShortcuts="1" emojiImages="0">
-      <PegdownExtensions>
-        <option name="ABBREVIATIONS" value="false" />
-        <option name="ANCHORLINKS" value="true" />
-        <option name="ASIDE" value="false" />
-        <option name="ATXHEADERSPACE" value="true" />
-        <option name="AUTOLINKS" value="true" />
-        <option name="DEFINITIONS" value="false" />
-        <option name="DEFINITION_BREAK_DOUBLE_BLANK_LINE" value="false" />
-        <option name="FENCED_CODE_BLOCKS" value="true" />
-        <option name="FOOTNOTES" value="false" />
-        <option name="HARDWRAPS" value="false" />
-        <option name="HTML_DEEP_PARSER" value="false" />
-        <option name="INSERTED" value="false" />
-        <option name="QUOTES" value="false" />
-        <option name="RELAXEDHRULES" value="true" />
-        <option name="SMARTS" value="false" />
-        <option name="STRIKETHROUGH" value="true" />
-        <option name="SUBSCRIPT" value="false" />
-        <option name="SUPERSCRIPT" value="false" />
-        <option name="SUPPRESS_HTML_BLOCKS" value="false" />
-        <option name="SUPPRESS_INLINE_HTML" value="false" />
-        <option name="TABLES" value="true" />
-        <option name="TASKLISTITEMS" value="true" />
-        <option name="TOC" value="false" />
-        <option name="WIKILINKS" value="true" />
-      </PegdownExtensions>
-      <ParserOptions>
-        <option name="ADMONITION_EXT" value="false" />
-        <option name="ATTRIBUTES_EXT" value="false" />
-        <option name="COMMONMARK_LISTS" value="true" />
-        <option name="DUMMY" value="false" />
-        <option name="EMOJI_SHORTCUTS" value="true" />
-        <option name="ENUMERATED_REFERENCES_EXT" value="false" />
-        <option name="FLEXMARK_FRONT_MATTER" value="false" />
-        <option name="GFM_LOOSE_BLANK_LINE_AFTER_ITEM_PARA" value="false" />
-        <option name="GFM_TABLE_RENDERING" value="true" />
-        <option name="GITBOOK_URL_ENCODING" value="false" />
-        <option name="GITHUB_LISTS" value="false" />
-        <option name="GITHUB_WIKI_LINKS" value="true" />
-        <option name="HEADER_ID_NO_DUPED_DASHES" value="false" />
-        <option name="JEKYLL_FRONT_MATTER" value="false" />
-        <option name="NO_TEXT_ATTRIBUTES" value="false" />
-        <option name="PARSE_HTML_ANCHOR_ID" value="false" />
-        <option name="SIM_TOC_BLANK_LINE_SPACER" value="true" />
-      </ParserOptions>
-    </ParserSettings>
-    <HtmlSettings headerTopEnabled="false" headerBottomEnabled="false" bodyTopEnabled="false" bodyBottomEnabled="false" embedUrlContent="false" addPageHeader="true" embedImages="false" embedHttpImages="false" imageUriSerials="false">
-      <GeneratorProvider>
-        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.generator" providerName="Default Swing HTML Generator" />
-      </GeneratorProvider>
-      <headerTop />
-      <headerBottom />
-      <bodyTop />
-      <bodyBottom />
-    </HtmlSettings>
-    <CssSettings previewScheme="UI_SCHEME" cssUri="" isCssUriEnabled="false" isCssUriSerial="false" isCssTextEnabled="false" isDynamicPageWidth="true">
-      <StylesheetProvider>
-        <provider providerId="com.vladsch.idea.multimarkdown.editor.swing.html.css" providerName="Default Swing Stylesheet" />
-      </StylesheetProvider>
-      <ScriptProviders />
-      <cssText />
-      <cssUriHistory />
-    </CssSettings>
-    <HtmlExportSettings updateOnSave="false" parentDir="" targetDir="" cssDir="" scriptDir="" plainHtml="false" imageDir="" copyLinkedImages="false" imageUniquifyType="0" targetExt="" useTargetExt="false" noCssNoScripts="false" linkToExportedHtml="true" exportOnSettingsChange="true" regenerateOnProjectOpen="false" linkFormatType="HTTP_ABSOLUTE" />
-    <LinkMapSettings>
-      <textMaps />
-    </LinkMapSettings>
-  </component>
-</project>

+ 0 - 3
.idea/markdown-navigator/profiles_settings.xml

@@ -1,3 +0,0 @@
-<component name="MarkdownNavigator.ProfileManager">
-  <settings default="" pdf-export="" />
-</component>

+ 0 - 38
.idea/misc.xml

@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="NullableNotNullManager">
-    <option name="myDefaultNullable" value="android.support.annotation.Nullable" />
-    <option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
-    <option name="myNullables">
-      <value>
-        <list size="7">
-          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
-          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
-          <item index="2" class="java.lang.String" itemvalue="javax.annotation.CheckForNull" />
-          <item index="3" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
-          <item index="4" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
-          <item index="5" class="java.lang.String" itemvalue="androidx.annotation.Nullable" />
-          <item index="6" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNullable" />
-        </list>
-      </value>
-    </option>
-    <option name="myNotNulls">
-      <value>
-        <list size="6">
-          <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
-          <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
-          <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
-          <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
-          <item index="4" class="java.lang.String" itemvalue="androidx.annotation.NonNull" />
-          <item index="5" class="java.lang.String" itemvalue="androidx.annotation.RecentlyNonNull" />
-        </list>
-      </value>
-    </option>
-  </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
-    <output url="file://$PROJECT_DIR$/build/classes" />
-  </component>
-  <component name="ProjectType">
-    <option name="id" value="Android" />
-  </component>
-</project>

+ 1 - 1
.idea/modules.xml

@@ -2,7 +2,7 @@
 <project version="4">
   <component name="ProjectModuleManager">
     <modules>
-      <module fileurl="file://$PROJECT_DIR$/YCVideoPlayer.iml" filepath="$PROJECT_DIR$/YCVideoPlayer.iml" />
+      <module fileurl="file://$PROJECT_DIR$/.idea/YCVideoPlayer.iml" filepath="$PROJECT_DIR$/.idea/YCVideoPlayer.iml" />
       <module fileurl="file://$PROJECT_DIR$/YCVideoPlayerLib/YCVideoPlayerLib.iml" filepath="$PROJECT_DIR$/YCVideoPlayerLib/YCVideoPlayerLib.iml" />
       <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
     </modules>

+ 18 - 1
README.md

@@ -184,7 +184,7 @@
 
 
 #### 2.5 注意问题
-##### 2.5.1如果是全屏播放,则需要在清单文件中设置当前activity的属性值**
+##### 2.5.1 如果是全屏播放,则需要在清单文件中设置当前activity的属性值**
 - android:configChanges 保证了在全屏的时候横竖屏切换不会执行Activity的相关生命周期,打断视频的播放
 - android:screenOrientation 固定了屏幕的初始方向
 - 这两个变量控制全屏后和退出全屏的屏幕方向
@@ -206,6 +206,23 @@
     ```
 
 
+##### 2.5.3 如何一进入页面就开始播放视频
+- 代码如下所示,注意避免直接start(),因为有可能视频还没有初始化完成……
+    ```
+    videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
+    videoPlayer.setUp(ConstantVideo.VideoPlayerList[0], null);
+    controller = new VideoPlayerController(this);
+    videoPlayer.setController(controller);
+    //videoPlayer.start();
+    videoPlayer.postDelayed(new Runnable() {
+        @Override
+        public void run() {
+            videoPlayer.start();
+        }
+    },500);
+    ```
+
+
 
 ### 4.文档wiki说明[待更新,待完善]
 - [Home]()

+ 0 - 1
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/constant/ConstantKeys.java

@@ -31,7 +31,6 @@ import java.lang.annotation.RetentionPolicy;
  */
 public final class ConstantKeys {
 
-
     /**
      * 通过注解限定类型
      * TYPE_IJK                 IjkPlayer,基于IjkPlayer封装播放器

+ 3 - 2
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/controller/AbsVideoPlayerController.java

@@ -1,5 +1,3 @@
-package org.yczbj.ycvideoplayerlib.controller;
-
 /*
 Copyright 2017 yangchong211(github.com/yangchong211)
 
@@ -16,6 +14,8 @@ See the License for the specific language governing permissions and
 limitations under the License.
 */
 
+package org.yczbj.ycvideoplayerlib.controller;
+
 import android.content.Context;
 import android.support.annotation.DrawableRes;
 import android.view.MotionEvent;
@@ -205,6 +205,7 @@ public abstract class AbsVideoPlayerController extends FrameLayout implements Vi
                     AbsVideoPlayerController.this.post(new Runnable() {
                         @Override
                         public void run() {
+                            updateProgress();
                             updateNetSpeedProgress();
                         }
                     });

+ 73 - 29
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/controller/VideoPlayerController.java

@@ -150,7 +150,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
      * 顶部的布局,下载,切换音频,分享布局是否显示。
      * 默认为false,不显示
      */
-    private boolean mIsTopAndBottomVisibility = false;
+    private boolean mIsTopLayoutVisibility = false;
     /**
      * 设置视频播放器中间的播放键是否显示
      * 默认为false,不显示
@@ -193,12 +193,23 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            boolean animating = pbLoadingRing.isAnimating();
-            if (animating){
+            if (pbLoadingRing!=null && pbLoadingRing.getVisibility()==View.VISIBLE){
+                boolean animating = pbLoadingRing.isAnimating();
+                if (animating){
+                    pbLoadingRing.clearAnimation();
+                }
+            }
+            if (pbLoadingQq!=null && pbLoadingQq.getVisibility()==View.VISIBLE){
+                boolean ringAnimating = pbLoadingQq.isAnimating();
+                if (ringAnimating){
+                    pbLoadingQq.clearAnimation();
+                }
+            }
+        } else {
+            if (pbLoadingRing!=null && pbLoadingRing.getVisibility()==View.VISIBLE){
                 pbLoadingRing.clearAnimation();
             }
-            boolean ringAnimating = pbLoadingQq.isAnimating();
-            if (ringAnimating){
+            if (pbLoadingQq!=null && pbLoadingQq.getVisibility()==View.VISIBLE){
                 pbLoadingQq.clearAnimation();
             }
         }
@@ -321,7 +332,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         mLine = findViewById(R.id.line);
         mPbPlayBar = findViewById(R.id.pb_play_bar);
 
-        setTopVisibility(mIsTopAndBottomVisibility);
+        setTopVisibility(mIsTopLayoutVisibility);
     }
 
 
@@ -376,7 +387,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
      */
     @Override
     public void setTopVisibility(boolean isVisibility) {
-        this.mIsTopAndBottomVisibility = isVisibility;
+        this.mIsTopLayoutVisibility = isVisibility;
         if(isVisibility){
             mLlTopOther.setVisibility(VISIBLE);
         }else {
@@ -443,8 +454,10 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
      * @param title             视频标题
      */
     @Override
-    public void setTitle(@NonNull String title) {
-        mTitle.setText(title);
+    public void setTitle(String title) {
+        if (title!=null && title.length()>0){
+            mTitle.setText(title);
+        }
     }
 
 
@@ -474,7 +487,12 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
      */
     @Override
     public void setLength(long length) {
-        mLength.setText(VideoPlayerUtils.formatTime(length));
+        if (length>0){
+            mLength.setVisibility(VISIBLE);
+            mLength.setText(VideoPlayerUtils.formatTime(length));
+        } else {
+            mLength.setVisibility(GONE);
+        }
     }
 
 
@@ -484,7 +502,12 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
      */
     @Override
     public void setLength(String length) {
-        mLength.setText(length);
+        if (length!=null && length.length()>0){
+            mLength.setVisibility(VISIBLE);
+            mLength.setText(length);
+        } else {
+            mLength.setVisibility(GONE);
+        }
     }
 
 
@@ -496,7 +519,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
     public void setVideoPlayer(InterVideoPlayer videoPlayer) {
         super.setVideoPlayer(videoPlayer);
         // 给播放器配置视频链接地址
-        if (clarities != null && clarities.size() > 1) {
+        if (clarities != null && clarities.size() > 1 && clarities.size()>defaultClarityIndex) {
             mVideoPlayer.setUp(clarities.get(defaultClarityIndex).getVideoUrl(), null);
         }
     }
@@ -625,6 +648,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
             case ConstantKeys.CurrentState.STATE_PLAYING:
                 mLoading.setVisibility(View.GONE);
                 mCenterStart.setVisibility(View.GONE);
+                mPbPlayBar.setVisibility(View.VISIBLE);
                 mRestartPause.setImageResource(R.drawable.ic_player_pause);
                 startDismissTopBottomTimer();
                 cancelUpdateNetSpeedTimer();
@@ -683,6 +707,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         mBottom.setVisibility(View.GONE);
         mCenterStart.setVisibility(View.GONE);
         mLength.setVisibility(View.GONE);
+        mPbPlayBar.setVisibility(GONE);
         //开启缓冲时更新网络加载速度
         startUpdateNetSpeedTimer();
         startUpdateProgressTimer();
@@ -733,18 +758,25 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         switch (playMode) {
             //普通模式
             case ConstantKeys.PlayMode.MODE_NORMAL:
+                //隐藏锁屏控件
                 mFlLock.setVisibility(View.GONE);
                 mBack.setVisibility(View.VISIBLE);
                 mFullScreen.setImageResource(R.drawable.ic_player_open);
                 mFullScreen.setVisibility(View.VISIBLE);
+                //隐藏清晰度
                 mClarity.setVisibility(View.GONE);
-                setTopVisibility(mIsTopAndBottomVisibility);
+                setTopVisibility(mIsTopLayoutVisibility);
+                //隐藏横屏的时候展现的布局
+                setTopVisibility(false);
                 mLlHorizontal.setVisibility(View.GONE);
                 unRegisterBatterReceiver();
                 mIsLock = false;
                 if (mOnPlayerTypeListener!=null){
                     mOnPlayerTypeListener.onNormal();
                 }
+                //隐藏电量图标
+                mBattery.setVisibility(GONE);
+                setTopVisibility(mIsTopLayoutVisibility);
                 break;
             //全屏模式
             case ConstantKeys.PlayMode.MODE_FULL_SCREEN:
@@ -755,14 +787,10 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
                 if (clarities != null && clarities.size() > 1) {
                     mClarity.setVisibility(View.VISIBLE);
                 }
-                mLlTopOther.setVisibility(GONE);
-                if (mIsTopAndBottomVisibility){
-                    mLlHorizontal.setVisibility(View.VISIBLE);
-                    mIvHorTv.setVisibility(mIsTvIconVisibility?VISIBLE:GONE);
-                    mIvHorAudio.setVisibility(mIsAudioIconVisibility?VISIBLE:GONE);
-                }else {
-                    mLlHorizontal.setVisibility(View.GONE);
-                }
+                setTopVisibility(false);
+                mLlHorizontal.setVisibility(View.VISIBLE);
+                mIvHorTv.setVisibility(mIsTvIconVisibility?VISIBLE:GONE);
+                mIvHorAudio.setVisibility(mIsAudioIconVisibility?VISIBLE:GONE);
                 registerBatterReceiver();
                 if (mOnPlayerTypeListener!=null){
                     mOnPlayerTypeListener.onFullScreen();
@@ -773,6 +801,8 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
                 mFlLock.setVisibility(View.GONE);
                 mBack.setVisibility(View.VISIBLE);
                 mClarity.setVisibility(View.GONE);
+                mLlHorizontal.setVisibility(View.GONE);
+                setTopVisibility(false);
                 mIsLock = false;
                 if (mOnPlayerTypeListener!=null){
                     mOnPlayerTypeListener.onTinyWindow();
@@ -831,13 +861,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
     public void onClick(View v) {
         if (v == mCenterStart) {
             //开始播放
-            if (mVideoPlayer.isIdle()) {
-                mVideoPlayer.start();
-            }else if (mVideoPlayer.isPlaying() || mVideoPlayer.isBufferingPlaying()) {
-                mVideoPlayer.pause();
-            } else if (mVideoPlayer.isPaused() || mVideoPlayer.isBufferingPaused()) {
-                mVideoPlayer.restart();
-            }
+            startVideo();
         } else if (v == mBack) {
             //退出,执行返回逻辑
             //如果是全屏,则先退出全屏
@@ -906,7 +930,12 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
             }
         } else if (v == mShare) {
             //分享
-            Toast.makeText(mContext, "分享", Toast.LENGTH_SHORT).show();
+            if(mVideoControlListener==null){
+                VideoLogUtil.d("请在初始化的时候设置分享监听事件");
+                return;
+            }
+            //点击下载
+            mVideoControlListener.onVideoControlClick(ConstantKeys.VideoControl.SHARE);
         } else if(v == mFlLock){
             //点击锁屏按钮,则进入锁屏模式
             setLock(mIsLock);
@@ -960,6 +989,20 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         }
     }
 
+    /**
+     * 开始播放
+     */
+    public void startVideo() {
+        //开始播放
+        if (mVideoPlayer.isIdle()) {
+            mVideoPlayer.start();
+        }else if (mVideoPlayer.isPlaying() || mVideoPlayer.isBufferingPlaying()) {
+            mVideoPlayer.pause();
+        } else if (mVideoPlayer.isPaused() || mVideoPlayer.isBufferingPaused()) {
+            mVideoPlayer.restart();
+        }
+    }
+
     /**
      * 当电量发生变化的时候,在此方法中国你更新不同的电量状态的UI
      *
@@ -1024,6 +1067,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         }
         cancelDismissTopBottomTimer();
         if (mDismissTopBottomCountDownTimer == null) {
+            //CountDownTimer定时器
             mDismissTopBottomCountDownTimer = new CountDownTimer(time, time) {
                 @Override
                 public void onTick(long millisUntilFinished) {

+ 5 - 6
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/inter/listener/OnSurfaceListener.java

@@ -16,25 +16,24 @@ limitations under the License.
 package org.yczbj.ycvideoplayerlib.inter.listener;
 
 
-import android.graphics.SurfaceTexture;
+import android.view.SurfaceHolder;
 
 /**
  * <pre>
  *     @author yangchong
  *     blog  : https://github.com/yangchong211
  *     time  : 2017/11/9
- *     desc  : VideoTextureView监听
+ *     desc  : VideoSurfaceView监听
  *     revise:
  * </pre>
  */
 public interface OnSurfaceListener {
 
-    void onSurfaceAvailable(SurfaceTexture surface);
+    void surfaceCreated(SurfaceHolder holder);
 
-    void onSurfaceSizeChanged(SurfaceTexture surface, int width, int height);
+    void surfaceChanged(SurfaceHolder holder, int format, int width, int height);
 
-    boolean onSurfaceDestroyed(SurfaceTexture surface);
+    void surfaceDestroyed(SurfaceHolder holder);
 
-    void onSurfaceUpdated(SurfaceTexture surface);
 
 }

+ 60 - 0
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/inter/listener/OnTextureListener.java

@@ -0,0 +1,60 @@
+/*
+Copyright 2017 yangchong211(github.com/yangchong211)
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package org.yczbj.ycvideoplayerlib.inter.listener;
+
+
+import android.graphics.SurfaceTexture;
+
+/**
+ * <pre>
+ *     @author yangchong
+ *     blog  : https://github.com/yangchong211
+ *     time  : 2017/11/9
+ *     desc  : VideoTextureView监听
+ *     revise:
+ * </pre>
+ */
+public interface OnTextureListener {
+
+    /**
+     * SurfaceTexture准备就绪
+     * @param surface                   surface
+     */
+    void onSurfaceAvailable(SurfaceTexture surface);
+
+    /**
+     * SurfaceTexture缓冲大小变化
+     * @param surface                   surface
+     * @param width                     width
+     * @param height                    height
+     */
+    void onSurfaceSizeChanged(SurfaceTexture surface, int width, int height);
+
+    /**
+     * SurfaceTexture即将被销毁
+     * @param surface                   surface
+     * @return                          销毁
+     */
+    boolean onSurfaceDestroyed(SurfaceTexture surface);
+
+
+    /**
+     * SurfaceTexture通过updateImage更新
+     * @param surface                   surface
+     */
+    void onSurfaceUpdated(SurfaceTexture surface);
+
+}

+ 13 - 1
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/manager/VideoPlayerManager.java

@@ -31,8 +31,18 @@ import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 public final class VideoPlayerManager {
 
     private VideoPlayer mVideoPlayer;
+    /**
+     * 用volatile关键字修饰对象
+     * 为何要确保只有一个对象,为了保证任何时候有且只有一个视频播放,尤其是在列表中播放
+     */
     private static volatile VideoPlayerManager sInstance;
-    private VideoPlayerManager() {}
+
+    /**
+     * 构造方法,避免直接new
+     */
+    private VideoPlayerManager() {
+        //避免初始化
+    }
 
     /**
      * 一定要使用单例模式,保证同一时刻只有一个视频在播放,其他的都是初始状态
@@ -114,9 +124,11 @@ public final class VideoPlayerManager {
      */
     public boolean onBackPressed() {
         if (mVideoPlayer != null) {
+            //如果是全屏幕,则退出全屏
             if (mVideoPlayer.isFullScreen()) {
                 return mVideoPlayer.exitFullScreen();
             } else if (mVideoPlayer.isTinyWindow()) {
+                //如果是小窗口播放,则退出小窗口
                 return mVideoPlayer.exitTinyWindow();
             }
         }

+ 22 - 11
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/player/VideoPlayer.java

@@ -35,8 +35,8 @@ import android.widget.FrameLayout;
 import android.widget.Toast;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
 import org.yczbj.ycvideoplayerlib.controller.AbsVideoPlayerController;
+import org.yczbj.ycvideoplayerlib.inter.listener.OnTextureListener;
 import org.yczbj.ycvideoplayerlib.inter.player.InterVideoPlayer;
-import org.yczbj.ycvideoplayerlib.inter.listener.OnSurfaceListener;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.utils.VideoLogUtil;
 import org.yczbj.ycvideoplayerlib.utils.VideoPlayerUtils;
@@ -117,6 +117,8 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
         mContainer.setBackgroundColor(Color.BLACK);
         LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT);
+
+        //将布局添加到该视图中
         this.addView(mContainer, params);
     }
 
@@ -246,6 +248,10 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
      */
     @Override
     public void start() {
+        if (mController==null){
+            //在调用start方法前,请先初始化视频控制器,调用setController方法
+            throw new NullPointerException("Controller must not be null , please setController first");
+        }
         if (mCurrentState == ConstantKeys.CurrentState.STATE_IDLE) {
             VideoPlayerManager.instance().setCurrentVideoPlayer(this);
             initAudioManager();
@@ -635,7 +641,8 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
         //SeekTo设置优化
         ((IjkMediaPlayer)mMediaPlayer).setOption(player, "enable-accurate-seek", 1L);
         ((IjkMediaPlayer)mMediaPlayer).setOption(player, "opensles", 0);
-        ((IjkMediaPlayer)mMediaPlayer).setOption(player, "overlay-format", IjkMediaPlayer.SDL_FCC_RV32);
+        ((IjkMediaPlayer)mMediaPlayer).setOption(player, "overlay-format",
+                IjkMediaPlayer.SDL_FCC_RV32);
         ((IjkMediaPlayer)mMediaPlayer).setOption(player, "framedrop", 1);
         ((IjkMediaPlayer)mMediaPlayer).setOption(player, "start-on-prepared", 0);
         ((IjkMediaPlayer)mMediaPlayer).setOption(format, "http-detect-range-support", 0);
@@ -659,7 +666,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
     private void initTextureView() {
         if (mTextureView == null) {
             mTextureView = new VideoTextureView(mContext);
-            mTextureView.setOnSurfaceListener(new OnSurfaceListener() {
+            mTextureView.setOnTextureListener(new OnTextureListener() {
                 @Override
                 public void onSurfaceAvailable(SurfaceTexture surface) {
                     if (mSurfaceTexture == null) {
@@ -674,17 +681,18 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
 
                 @Override
                 public void onSurfaceSizeChanged(SurfaceTexture surface, int width, int height) {
-
+                    VideoLogUtil.i("OnTextureListener----"+"onSurfaceSizeChanged");
                 }
 
                 @Override
                 public boolean onSurfaceDestroyed(SurfaceTexture surface) {
+                    VideoLogUtil.i("OnTextureListener----"+"onSurfaceDestroyed");
                     return mSurfaceTexture == null;
                 }
 
                 @Override
                 public void onSurfaceUpdated(SurfaceTexture surface) {
-
+                    VideoLogUtil.i("OnTextureListener----"+"onSurfaceUpdated");
                 }
             });
         }
@@ -697,7 +705,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
      */
     @RequiresApi(api = Build.VERSION_CODES.ICE_CREAM_SANDWICH)
     private void openMediaPlayer() {
-        // 屏幕常亮
+        // 屏幕常亮,这个很重要,如果不设置,则看视频一会儿,屏幕会变暗
         mContainer.setKeepScreenOn(true);
         // 设置监听,可以查看ijk中的IMediaPlayer源码监听事件
         // 设置准备视频播放监听事件
@@ -813,9 +821,11 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
     /**
      * 设置视频大小更改监听器
      */
-    private IMediaPlayer.OnVideoSizeChangedListener mOnVideoSizeChangedListener = new IMediaPlayer.OnVideoSizeChangedListener() {
+    private IMediaPlayer.OnVideoSizeChangedListener mOnVideoSizeChangedListener =
+            new IMediaPlayer.OnVideoSizeChangedListener() {
         @Override
-        public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den) {
+        public void onVideoSizeChanged(IMediaPlayer mp, int width, int height,
+                                       int sar_num, int sar_den) {
             mTextureView.adaptVideoSize(width, height);
             VideoLogUtil.d("onVideoSizeChanged ——> width:" + width + ", height:" + height);
         }
@@ -857,7 +867,8 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
                 VideoLogUtil.d("onInfo ——> MEDIA_INFO_VIDEO_RENDERING_START:STATE_PLAYING");
             } else if (what == IMediaPlayer.MEDIA_INFO_BUFFERING_START) {
                 // MediaPlayer暂时不播放,以缓冲更多的数据
-                if (mCurrentState == ConstantKeys.CurrentState.STATE_PAUSED || mCurrentState == ConstantKeys.CurrentState.STATE_BUFFERING_PAUSED) {
+                if (mCurrentState == ConstantKeys.CurrentState.STATE_PAUSED ||
+                        mCurrentState == ConstantKeys.CurrentState.STATE_BUFFERING_PAUSED) {
                     mCurrentState = ConstantKeys.CurrentState.STATE_BUFFERING_PAUSED;
                     VideoLogUtil.d("onInfo ——> MEDIA_INFO_BUFFERING_START:STATE_BUFFERING_PAUSED");
                 } else {
@@ -896,7 +907,8 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
     /**
      * 设置时间文本监听器
      */
-    private IMediaPlayer.OnTimedTextListener mOnTimedTextListener = new IMediaPlayer.OnTimedTextListener() {
+    private IMediaPlayer.OnTimedTextListener mOnTimedTextListener = new
+            IMediaPlayer.OnTimedTextListener() {
         @Override
         public void onTimedText(IMediaPlayer iMediaPlayer, IjkTimedText ijkTimedText) {
 
@@ -1088,7 +1100,6 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer {
      * 释放播放器,注意一定要判断对象是否为空,增强严谨性
      * 这样以便在当前播放器状态下可以方便的切换不同的清晰度的视频地址
      * 关于我的github:https://github.com/yangchong211
-     * 关于我的个人网站:www.ycbjie.cn或者www.yczbj.org
      * 杨充修改:
      *      17年12月23日,添加释放音频和TextureView
      */

+ 235 - 0
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/view/VideoSurfaceView.java

@@ -0,0 +1,235 @@
+/*
+Copyright 2017 yangchong211(github.com/yangchong211)
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package org.yczbj.ycvideoplayerlib.view;
+
+import android.content.Context;
+import android.view.Gravity;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.ViewGroup;
+import android.widget.FrameLayout;
+
+import org.yczbj.ycvideoplayerlib.inter.listener.OnSurfaceListener;
+
+/**
+ * <pre>
+ *     @author yangchong
+ *     blog  : https://github.com/yangchong211
+ *     time  : 2018/9/21
+ *     desc  : 重写SurfaceView,适配视频的宽高和旋转
+ *     revise:
+ * </pre>
+ */
+public class VideoSurfaceView extends SurfaceView{
+
+
+    /**
+     * 优点:可以在一个独立的线程中进行绘制,不会影响主线程;使用双缓冲机制,播放视频时画面更流畅
+     * 缺点:Surface不在View hierachy中,它的显示也不受View的属性控制,所以不能进行平移,缩放等变换,
+     *      也不能放在其它ViewGroup中。SurfaceView 不能嵌套使用。
+     */
+
+    private int videoHeight;
+    private int videoWidth;
+    private OnSurfaceListener onSurfaceListener;
+
+    public VideoSurfaceView(Context context) {
+        super(context);
+    }
+
+    @Override
+    protected void onDetachedFromWindow() {
+        super.onDetachedFromWindow();
+        if (callback!=null){
+            getHolder().removeCallback(callback);
+        }
+    }
+
+    private SurfaceHolder.Callback callback = new SurfaceHolder.Callback(){
+        /**
+         * 创建的时候调用该方法
+         * @param holder                        holder
+         */
+        @Override
+        public void surfaceCreated(SurfaceHolder holder) {
+            if (onSurfaceListener!=null){
+                onSurfaceListener.surfaceCreated(holder);
+            }
+        }
+
+        /**
+         * 视图改变的时候调用方法
+         * @param holder
+         * @param format
+         * @param width
+         * @param height
+         */
+        @Override
+        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+            if (onSurfaceListener!=null){
+                onSurfaceListener.surfaceChanged(holder, format, width, height);
+            }
+        }
+
+        /**
+         * 销毁的时候调用该方法
+         * @param holder
+         */
+        @Override
+        public void surfaceDestroyed(SurfaceHolder holder) {
+            if (onSurfaceListener!=null){
+                onSurfaceListener.surfaceDestroyed(holder);
+            }
+        }
+    };
+
+
+    /**
+     * 获取listener
+     * @return                          onSurfaceListener
+     */
+    public OnSurfaceListener getOnSurfaceListener() {
+        return onSurfaceListener;
+    }
+
+
+    /**
+     * 设置监听
+     * @param surfaceListener           onSurfaceListener
+     */
+    public void setOnSurfaceListener(OnSurfaceListener surfaceListener) {
+        this.onSurfaceListener = surfaceListener;
+        getHolder().addCallback(callback);
+    }
+
+
+    /**
+     * 添加TextureView到视图中
+     * @param frameLayout               布局
+     * @param videoSurfaceView          videoSurfaceView
+     */
+    public void addTextureView(FrameLayout frameLayout , VideoSurfaceView videoSurfaceView){
+        frameLayout.removeView(videoSurfaceView);
+        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
+                ViewGroup.LayoutParams.MATCH_PARENT,
+                ViewGroup.LayoutParams.MATCH_PARENT, Gravity.CENTER);
+        frameLayout.addView(videoSurfaceView, 0, params);
+    }
+
+
+    /**
+     * 自定义video大小
+     * @param videoWidth                宽
+     * @param videoHeight               高
+     */
+    public void adaptVideoSize(int videoWidth, int videoHeight) {
+        if (this.videoWidth != videoWidth && this.videoHeight != videoHeight) {
+            this.videoWidth = videoWidth;
+            this.videoHeight = videoHeight;
+            requestLayout();
+        }
+    }
+
+
+    /**
+     * 记得一定要重新写这个方法,如果角度发生了变化,就重新绘制布局
+     * 设置视频旋转角度
+     * @param rotation                  角度
+     */
+    @Override
+    public void setRotation(float rotation) {
+        if (rotation != getRotation()) {
+            super.setRotation(rotation);
+            requestLayout();
+        }
+    }
+
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // 获取视图旋转的角度
+        float viewRotation = getRotation();
+        // 如果判断成立,则说明显示的TextureView和本身的位置是有90度的旋转的,所以需要交换宽高参数。
+        float viewRotation1 = 90f;
+        float viewRotation2 = 270f;
+        if (viewRotation == viewRotation1 || viewRotation == viewRotation2) {
+            int tempMeasureSpec = widthMeasureSpec;
+            //noinspection SuspiciousNameCombination
+            widthMeasureSpec = heightMeasureSpec;
+            heightMeasureSpec = tempMeasureSpec;
+        }
+
+        int width = getDefaultSize(videoWidth, widthMeasureSpec);
+        int height = getDefaultSize(videoHeight, heightMeasureSpec);
+        if (videoWidth > 0 && videoHeight > 0) {
+
+            int widthSpecMode = MeasureSpec.getMode(widthMeasureSpec);
+            int widthSpecSize = MeasureSpec.getSize(widthMeasureSpec);
+            int heightSpecMode = MeasureSpec.getMode(heightMeasureSpec);
+            int heightSpecSize = MeasureSpec.getSize(heightMeasureSpec);
+
+            if (widthSpecMode == MeasureSpec.EXACTLY && heightSpecMode == MeasureSpec.EXACTLY) {
+                // the size is fixed
+                width = widthSpecSize;
+                height = heightSpecSize;
+                // for compatibility, we adjust size based on aspect ratio
+                if (videoWidth * height < width * videoHeight) {
+                    width = height * videoWidth / videoHeight;
+                } else if (videoWidth * height > width * videoHeight) {
+                    height = width * videoHeight / videoWidth;
+                }
+            } else if (widthSpecMode == MeasureSpec.EXACTLY) {
+                // only the width is fixed, adjust the height to match aspect ratio if possible
+                width = widthSpecSize;
+                height = width * videoHeight / videoWidth;
+                if (heightSpecMode == MeasureSpec.AT_MOST && height > heightSpecSize) {
+                    // couldn't match aspect ratio within the constraints
+                    height = heightSpecSize;
+                    width = height * videoWidth / videoHeight;
+                }
+            } else if (heightSpecMode == MeasureSpec.EXACTLY) {
+                // only the height is fixed, adjust the width to match aspect ratio if possible
+                height = heightSpecSize;
+                width = height * videoWidth / videoHeight;
+                if (widthSpecMode == MeasureSpec.AT_MOST && width > widthSpecSize) {
+                    // couldn't match aspect ratio within the constraints
+                    width = widthSpecSize;
+                    height = width * videoHeight / videoWidth;
+                }
+            } else {
+                // neither the width nor the height are fixed, try to use actual video size
+                width = videoWidth;
+                height = videoHeight;
+                if (heightSpecMode == MeasureSpec.AT_MOST && height > heightSpecSize) {
+                    // too tall, decrease both width and height
+                    height = heightSpecSize;
+                    width = height * videoWidth / videoHeight;
+                }
+                if (widthSpecMode == MeasureSpec.AT_MOST && width > widthSpecSize) {
+                    // too wide, decrease both width and height
+                    width = widthSpecSize;
+                    height = width * videoHeight / videoWidth;
+                }
+            }
+        } else {
+            // no size yet, just adopt the given spec sizes
+        }
+        setMeasuredDimension(width, height);
+    }
+
+
+}

+ 24 - 19
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/view/VideoTextureView.java

@@ -24,7 +24,7 @@ import android.view.TextureView;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
-import org.yczbj.ycvideoplayerlib.inter.listener.OnSurfaceListener;
+import org.yczbj.ycvideoplayerlib.inter.listener.OnTextureListener;
 
 
 /**
@@ -39,9 +39,14 @@ import org.yczbj.ycvideoplayerlib.inter.listener.OnSurfaceListener;
 @SuppressLint("NewApi")
 public class VideoTextureView extends TextureView implements TextureView.SurfaceTextureListener {
 
+    /**
+     * 优点:支持移动、旋转、缩放等动画,支持截图。具有view的属性
+     * 缺点:必须在硬件加速的窗口中使用,占用内存比SurfaceView高,在5.0以前在主线程渲染,5.0以后有单独的渲染线程。
+     */
+
     private int videoHeight;
     private int videoWidth;
-    private OnSurfaceListener onSurfaceListener;
+    private OnTextureListener onTextureListener;
 
 
     public VideoTextureView(Context context) {
@@ -57,8 +62,8 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
      */
     @Override
     public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
-        if (onSurfaceListener != null) {
-            onSurfaceListener.onSurfaceAvailable(surface);
+        if (onTextureListener != null) {
+            onTextureListener.onSurfaceAvailable(surface);
         }
     }
 
@@ -71,8 +76,8 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
      */
     @Override
     public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
-        if (onSurfaceListener != null) {
-            onSurfaceListener.onSurfaceSizeChanged(surface, width, height);
+        if (onTextureListener != null) {
+            onTextureListener.onSurfaceSizeChanged(surface, width, height);
         }
     }
 
@@ -84,8 +89,8 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
     @Override
     public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
         //清空释放
-        if (onSurfaceListener != null) {
-            onSurfaceListener.onSurfaceDestroyed(surface);
+        if (onTextureListener != null) {
+            onTextureListener.onSurfaceDestroyed(surface);
         }
         return false;
     }
@@ -98,28 +103,28 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
     @Override
     public void onSurfaceTextureUpdated(SurfaceTexture surface) {
         //如果播放的是暂停全屏了
-        if (onSurfaceListener != null) {
-            onSurfaceListener.onSurfaceUpdated(surface);
+        if (onTextureListener != null) {
+            onTextureListener.onSurfaceUpdated(surface);
         }
     }
 
 
     /**
      * 获取listener
-     * @return                          onSurfaceListener
+     * @return                          onTextureListener
      */
-    public OnSurfaceListener getOnSurfaceListener() {
-        return onSurfaceListener;
+    public OnTextureListener getonTextureListener() {
+        return onTextureListener;
     }
 
 
     /**
      * 设置监听
-     * @param surfaceListener           onSurfaceListener
+     * @param surfaceListener           onTextureListener
      */
-    public void setOnSurfaceListener(OnSurfaceListener surfaceListener) {
+    public void setOnTextureListener(OnTextureListener surfaceListener) {
         setSurfaceTextureListener(this);
-        onSurfaceListener = surfaceListener;
+        onTextureListener = surfaceListener;
     }
 
 
@@ -169,10 +174,12 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
 
     @Override
     protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        // 获取视图旋转的角度
         float viewRotation = getRotation();
         // 如果判断成立,则说明显示的TextureView和本身的位置是有90度的旋转的,所以需要交换宽高参数。
         float viewRotation1 = 90f;
         float viewRotation2 = 270f;
+        //如果是横竖屏旋转切换视图,则宽高属性互换
         if (viewRotation == viewRotation1 || viewRotation == viewRotation2) {
             int tempMeasureSpec = widthMeasureSpec;
             //noinspection SuspiciousNameCombination
@@ -232,9 +239,7 @@ public class VideoTextureView extends TextureView implements TextureView.Surface
                     height = width * videoHeight / videoWidth;
                 }
             }
-        } else {
-            // no size yet, just adopt the given spec sizes
-        }
+        }  // no size yet, just adopt the given spec sizes
         setMeasuredDimension(width, height);
     }
 

+ 4 - 4
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/window/FloatPhone.java

@@ -33,15 +33,15 @@ public class FloatPhone extends FloatView {
 
     @Override
     public void setView(View view) {
-        int layout_type;
+        int layoutType;
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-            layout_type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+            layoutType = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
         } else {
-            layout_type = WindowManager.LayoutParams.TYPE_PHONE;
+            layoutType = WindowManager.LayoutParams.TYPE_PHONE;
         }
         mLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
                 | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
-        mLayoutParams.type = layout_type;
+        mLayoutParams.type = layoutType;
         mLayoutParams.windowAnimations = 0;
         mView = view;
     }

+ 3 - 2
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/window/FloatPlayerView.java

@@ -45,13 +45,14 @@ public class FloatPlayerView extends FrameLayout {
     }
 
     private void init() {
-        LayoutInflater inflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        LayoutInflater inflater = (LayoutInflater) this.getContext()
+                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         View view ;
         if (inflater != null) {
             view = inflater.inflate(R.layout.view_window_dialog, this);
             mVideoPlayer = view.findViewById(R.id.video_player);
             mVideoPlayer.setUp(path,null);
-            mVideoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_NATIVE);
+            mVideoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
             //创建视频控制器
             VideoPlayerController controller = new VideoPlayerController(getContext());
             controller.setTopVisibility(false);

+ 2 - 1
YCVideoPlayerLib/src/main/res/layout/custom_video_player_top.xml

@@ -37,7 +37,7 @@
         android:layout_height="wrap_content"
         android:orientation="horizontal"
         android:layout_marginEnd="8dp"
-        android:visibility="visible"
+        android:visibility="gone"
         android:layout_marginRight="8dp">
         <ImageView
             android:id="@+id/iv_audio"
@@ -103,6 +103,7 @@
             android:layout_marginLeft="15dp">
             <ImageView
                 android:id="@+id/battery"
+                android:visibility="visible"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:src="@drawable/battery_100"/>

+ 3 - 47
app/build.gradle

@@ -24,16 +24,6 @@ android {
         }
     }
 
-    //为了解决第三方库重复打包了META_INF问题,替换为有冲突的依赖
-    packagingOptions {
-        exclude 'META-INF/rxjava.properties'
-    }
-
-
-    dexOptions {
-        javaMaxHeapSize "4g"
-    }
-
 
     //jdk1.8
     compileOptions {
@@ -63,48 +53,14 @@ dependencies {
         exclude module: 'support-v4'
     }
     implementation 'com.android.support:support-annotations:28.0.0'
-    implementation 'com.android.support:multidex:1.0.1'
-
-    //网络请求retrofit2+Rx
-    implementation 'com.squareup.okhttp3:logging-interceptor:3.9.0'
-    implementation 'com.squareup.okhttp3:okhttp:3.9.0'
-    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
-    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
-    //compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
-    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
-    //compile 'io.reactivex:rxandroid:1.2.1'
-    //compile 'io.reactivex:rxjava:1.2.3'
-    // RxJava 2
-    implementation 'io.reactivex.rxjava2:rxjava:2.1.3'
-    implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
 
-    //注解
-    implementation 'com.jakewharton:butterknife:8.8.1'                     //黄牛刀
-    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
     //其他库
-    implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.0@aar'      //导航栏
-    implementation 'com.blankj:utilcode:1.7.1'                             //工具类
-    implementation 'com.squareup.picasso:picasso:2.5.2'                    //图片
-    implementation 'com.github.bumptech.glide:glide:3.7.0'                 //谷歌图片加载库
+    implementation 'com.github.bumptech.glide:glide:4.9.0'                 //谷歌图片加载库
     implementation 'jp.wasabeef:glide-transformations:2.0.1'
-    implementation('com.alibaba.android:vlayout:1.2.2@aar') {              //阿里巴巴UI
-        transitive = true
-        exclude module: 'support-v4'
-    }
-    implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.1'             //RxLifecycle
-    implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.1'
-    implementation 'me.drakeet.multitype:multitype:3.4.0'                  //简化版 Adapter
-    implementation 'com.jakewharton.rxbinding2:rxbinding-appcompat-v7:2.0.0'
 
     //自己封装的库,都有对应的案例项目【欢迎star】:https://github.com/yangchong211
-    implementation 'cn.yc:YCUtilsLib:1.6.2'                                //公共类
     implementation 'cn.yc:YCStateLib:1.1'                                  //状态管理
-    implementation 'cn.yc:YCBannerLib:1.2'                                 //轮播图
-    implementation 'org.yczbj:YCRefreshViewLib:2.4'                        //RecyclerView封装
-    implementation 'cn.yc:YCBaseAdapterLib:1.3'                            //adapter封装
-    implementation 'cn.yc:YCDialogLib:3.5'                                 //弹窗
-    implementation 'cn.yc:YCProgressLib:1.2'                               //进度条
-    implementation 'cn.yc:YCVideoPlayerLib:2.6.6'                            //播放器
-//    implementation project(':YCVideoPlayerLib')
+//    implementation 'cn.yc:YCVideoPlayerLib:2.6.6'                            //播放器
+    implementation project(':YCVideoPlayerLib')
     implementation 'cn.yc:YCStatusBarLib:1.4.0'                              //状态栏
 }

+ 11 - 31
app/src/main/AndroidManifest.xml

@@ -9,7 +9,7 @@
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
 
     <application
-        android:name=".base.BaseApplication"
+        android:name=".BaseApplication"
         android:allowBackup="true"
         android:icon="@mipmap/ic_launcher"
         android:label="@string/app_name"
@@ -17,7 +17,7 @@
         android:supportsRtl="true"
         android:theme="@style/AppTheme"
         tools:ignore="GoogleAppIndexingWarning">
-        <activity android:name=".ui.main.view.activity.MainActivity"
+        <activity android:name=".MainActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait">
             <intent-filter>
@@ -26,53 +26,33 @@
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
-
-        <activity android:name=".ui.person.VideoPlayerMeActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:screenOrientation="portrait"/>
-        <activity android:name=".ui.home.view.activity.VideoPlayerJzActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:screenOrientation="portrait"/>
-        <activity android:name=".ui.video.view.activity.VideoContentActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:screenOrientation="portrait"/>
-        <activity android:name=".ui.movie.view.activity.MovieDetailActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:screenOrientation="portrait"/>
-        <activity android:name=".ui.movie.view.activity.MovieNewsActivity"/>
-        <activity android:name=".ui.test.test2.TestMyActivity"
+        <activity android:name=".TestTinyActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestThirdVideoActivity"
+        <activity android:name=".TestClarityActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestFiveVideoActivity"
+        <activity android:name=".TestRecyclerActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestSevenVideoActivity"
+        <activity android:name=".TestFragmentActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestSixVideoActivity"
+        <activity android:name=".TestEightVideoActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestEightVideoActivity"
+        <activity android:name=".TestListActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestNineVideoActivity"
+        <activity android:name=".TestWindowActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.test.test4.MediaPlayerActivity"/>
-        <activity android:name=".ui.person.TestFourWindowActivity"
+        <activity android:name=".TestNormalActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestFirstVideoActivity"
+        <activity android:name=".TestFullActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-        <activity android:name=".ui.person.TestSecondFullActivity"
-            android:configChanges="orientation|keyboardHidden|screenSize"
-            android:screenOrientation="portrait"/>
-        <activity android:name=".ui.home.view.activity.EmptyActivity"/>
-
     </application>
 
 </manifest>

+ 2 - 28
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/BaseActivity.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.base.mvp1;
+package org.yczbj.ycvideoplayer;
 
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
@@ -6,52 +6,26 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v7.app.AppCompatActivity;
 
-import com.blankj.utilcode.util.NetworkUtils;
-import com.blankj.utilcode.util.ToastUtils;
 
-import butterknife.ButterKnife;
 
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/5/18
- * 描    述:所有Activity的父类
- * 修订历史:
- * ================================================
- */
-public abstract class BaseActivity<T extends BasePresenter> extends AppCompatActivity {
+public abstract class BaseActivity extends AppCompatActivity {
 
-    /**
-     * 将代理类通用行为抽出来
-     */
-    protected T mPresenter;
 
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(getContentView());
-        ButterKnife.bind(this);
         //避免切换横竖屏
         setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-        if (mPresenter != null){
-            mPresenter.subscribe();
-        }
         initView();
         initListener();
         initData();
-        if(!NetworkUtils.isConnected()){
-            ToastUtils.showShort("请检查网络是否连接");
-        }
     }
 
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        if (mPresenter != null){
-            mPresenter.unSubscribe();
-        }
         //测试内存泄漏,正式一定要隐藏
         initLeakCanary();
     }

+ 1 - 19
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseApplication.java → app/src/main/java/org/yczbj/ycvideoplayer/BaseApplication.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.base;
+package org.yczbj.ycvideoplayer;
 
 import android.app.Application;
 import android.content.Context;
@@ -6,15 +6,9 @@ import android.content.res.Configuration;
 import android.support.multidex.MultiDex;
 import android.util.Log;
 
-import com.blankj.utilcode.util.Utils;
 
-import org.yczbj.ycvideoplayer.BuildConfig;
-import org.yczbj.ycvideoplayer.util.LogUtils;
-import org.yczbj.ycvideoplayer.util.ScreenDensityUtils;
 import org.yczbj.ycvideoplayerlib.utils.VideoLogUtil;
 
-import java.net.Proxy;
-
 /**
  * ================================================
  * 作    者:杨充
@@ -55,13 +49,9 @@ public class BaseApplication extends Application {
         Log.d("Application", "onCreate");
         super.onCreate();
         instance = this;
-        initUtils();
-        BaseLifecycleCallback.getInstance().init(this);
         ScreenDensityUtils.setup(this);
         ScreenDensityUtils.register(this,375.0f,
                 ScreenDensityUtils.MATCH_BASE_WIDTH,ScreenDensityUtils.MATCH_UNIT_DP);
-        BaseConfig.INSTANCE.initConfig();
-        LogUtils.logDebug = true;
         if(BuildConfig.DEBUG){
             VideoLogUtil.setIsLog(true);
         }else {
@@ -110,14 +100,6 @@ public class BaseApplication extends Application {
     }
 
 
-    /**
-     * 初始化utils工具类
-     */
-    private void initUtils() {
-        Utils.init(this);
-    }
-
-
 }
 
 

+ 4 - 3
app/src/main/java/org/yczbj/ycvideoplayer/api/constant/ConstantVideo.java → app/src/main/java/org/yczbj/ycvideoplayer/ConstantVideo.java

@@ -1,6 +1,4 @@
-package org.yczbj.ycvideoplayer.api.constant;
-
-
+package org.yczbj.ycvideoplayer;
 
 public class ConstantVideo {
 
@@ -10,6 +8,7 @@ public class ConstantVideo {
      * 所有有时导致视频无法播放,流量过高,一个星期竟然用了20多个G。
      */
     public static String[] VideoPlayerList = {
+            "http://vfx.mtime.cn/Video/2019/02/04/mp4/190204084208765161.mp4",
             "http://jzvd.nathen.cn/c494b340ff704015bb6682ffde3cd302/64929c369124497593205a4190d7d128-5287d2089db37e62345123a1be272f8b.mp4",
             "http://jzvd.nathen.cn/63f3f73712544394be981d9e4f56b612/69c5767bb9e54156b5b60a1b6edeb3b5-5287d2089db37e62345123a1be272f8b.mp4",
             "http://jzvd.nathen.cn/b201be3093814908bf987320361c5a73/2f6d913ea25941ffa78cc53a59025383-5287d2089db37e62345123a1be272f8b.mp4",
@@ -22,6 +21,7 @@ public class ConstantVideo {
 
 
     public static String[] VideoPlayerTitle = {
+            "大家好,我是潇湘剑雨",
             "大家好,我是潇湘剑雨",
             "如果项目可以,可以给个star",
             "有bug,可以直接提出来,欢迎一起探讨",
@@ -32,4 +32,5 @@ public class ConstantVideo {
             "逗比逗比把本地项目代码复制到拷贝的仓库",
     };
 
+
 }

+ 4 - 4
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test2/base/HomeKeyWatcher.java → app/src/main/java/org/yczbj/ycvideoplayer/HomeKeyWatcher.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.ui.test.test2.base;
+package org.yczbj.ycvideoplayer;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -68,10 +68,10 @@ public class HomeKeyWatcher {
                 if (reason != null) {
                     if (mListener != null) {
                         if (reason.equals(SYSTEM_DIALOG_REASON_HOME_KEY)) {
-                            // 短按home键    
+                            // 短按home键
                             mListener.onHomePressed();
                         } else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
-                            // 长按home键    
+                            // 长按home键
                             //mListener.onHomeLongPressed();
                         }
                     }
@@ -79,4 +79,4 @@ public class HomeKeyWatcher {
             }
         }
     }
-}  
+}

+ 87 - 0
app/src/main/java/org/yczbj/ycvideoplayer/ImageUtil.java

@@ -0,0 +1,87 @@
+package org.yczbj.ycvideoplayer;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+import android.widget.ImageView;
+
+import com.bumptech.glide.Glide;
+import com.bumptech.glide.load.engine.DiskCacheStrategy;
+import com.bumptech.glide.request.target.BitmapImageViewTarget;
+
+
+/**
+ * ================================================
+ * 作    者:杨充
+ * 版    本:1.0
+ * 创建日期:2017/3/14
+ * 描    述:图片加载工具类
+ * 修订历史:
+ * ================================================
+ */
+public class ImageUtil {
+
+
+    /**
+     * 将gif图转换为静态图
+     * @param context
+     * @param url
+     * @param resId
+     * @param imageView
+     */
+    public static void display(Context context , String url, int resId ,ImageView imageView) {
+        if(imageView==null){
+            return;
+        }
+        if(url!=null && url.length()>0){
+            Glide.with(context)
+                    .asBitmap()
+                    .load(url)
+                    .placeholder(resId)
+                    .error(resId)
+                    .into(imageView);
+        }else {
+            Glide.with(context)
+                    .asBitmap()
+                    .load(resId)
+
+                    .placeholder(resId)
+                    .error(resId)
+                    .into(imageView);
+        }
+    }
+
+
+    /**
+     * 加载带有圆角的矩形图片  用glide处理
+     *
+     * @param path   路径
+     * @param round  圆角半径
+     * @param resId  加载失败时的图片
+     * @param target 控件
+     */
+    public static void loadImgByPicassoWithRound(final Context activity, String path, final int round, int resId, final ImageView target) {
+        if (path != null && path.length() > 0) {
+            Glide.with(activity)
+                    .asBitmap()
+                    .load(path)
+                    .placeholder(resId)
+                    .error(resId)
+                    //设置缓存
+                    .diskCacheStrategy(DiskCacheStrategy.ALL)
+                    .into(new BitmapImageViewTarget(target) {
+                        @Override
+                        protected void setResource(Bitmap resource) {
+                            super.setResource(resource);
+                            RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(activity.getResources(), resource);
+                            //设置圆角弧度
+                            circularBitmapDrawable.setCornerRadius(round);
+                            target.setImageDrawable(circularBitmapDrawable);
+                        }
+                    });
+        }
+    }
+
+
+}

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/util/LogUtils.java → app/src/main/java/org/yczbj/ycvideoplayer/LogUtils.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.util;
+package org.yczbj.ycvideoplayer;
 
 import android.util.Log;
 

+ 170 - 0
app/src/main/java/org/yczbj/ycvideoplayer/MainActivity.java

@@ -0,0 +1,170 @@
+package org.yczbj.ycvideoplayer;
+
+import android.content.Intent;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.widget.Toolbar;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.TextView;
+
+
+import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+
+import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
+
+/**
+ * ================================================
+ * 作    者:杨充
+ * 版    本:1.0
+ * 创建日期:2017/11/18
+ * 描    述:Main主页面
+ * 修订历史:
+ * ================================================
+ */
+public class MainActivity extends AppCompatActivity implements View.OnClickListener {
+
+    private long exitTime;
+    private Toolbar mToolbar;
+    private TextView mTv0;
+    private TextView mTv1;
+    private TextView mTv2;
+    private TextView mTv3;
+    private TextView mTv4;
+    private TextView mTv5;
+    private TextView mTv6;
+    private TextView mTv7;
+    private TextView mTv8;
+    private TextView mTv9;
+    private TextView mTv10;
+    private TextView mTv11;
+    private TextView mTv12;
+    private TextView mTv13;
+    private TextView mTv14;
+    private TextView mTv15;
+    private TextView mTv16;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_main);
+        StateAppBar.setStatusBarLightMode(this, Color.WHITE);
+        initView();
+    }
+
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+
+    @Override
+    protected void onStop() {
+        super.onStop();
+        VideoPlayerManager.instance().releaseVideoPlayer();
+    }
+
+    @Override
+    public void onBackPressed() {
+        if (VideoPlayerManager.instance().onBackPressed()) {
+            return;
+        }
+        super.onBackPressed();
+    }
+
+
+    private void initView() {
+        mToolbar = (Toolbar) findViewById(R.id.toolbar);
+        mTv0 = (TextView) findViewById(R.id.tv_0);
+        mTv1 = (TextView) findViewById(R.id.tv_1);
+        mTv2 = (TextView) findViewById(R.id.tv_2);
+        mTv3 = (TextView) findViewById(R.id.tv_3);
+        mTv4 = (TextView) findViewById(R.id.tv_4);
+        mTv5 = (TextView) findViewById(R.id.tv_5);
+        mTv6 = (TextView) findViewById(R.id.tv_6);
+        mTv7 = (TextView) findViewById(R.id.tv_7);
+        mTv8 = (TextView) findViewById(R.id.tv_8);
+        mTv9 = (TextView) findViewById(R.id.tv_9);
+        mTv10 = (TextView) findViewById(R.id.tv_10);
+        mTv11 = (TextView) findViewById(R.id.tv_11);
+        mTv12 = (TextView) findViewById(R.id.tv_12);
+        mTv13 = (TextView) findViewById(R.id.tv_13);
+        mTv14 = (TextView) findViewById(R.id.tv_14);
+        mTv15 = (TextView) findViewById(R.id.tv_15);
+        mTv16 = (TextView) findViewById(R.id.tv_16);
+
+        mTv1.setOnClickListener(this);
+        mTv2.setOnClickListener(this);
+        mTv3.setOnClickListener(this);
+        mTv4.setOnClickListener(this);
+        mTv5.setOnClickListener(this);
+        mTv6.setOnClickListener(this);
+        mTv7.setOnClickListener(this);
+        mTv8.setOnClickListener(this);
+        mTv9.setOnClickListener(this);
+        mTv10.setOnClickListener(this);
+        mTv11.setOnClickListener(this);
+        mTv12.setOnClickListener(this);
+        mTv13.setOnClickListener(this);
+        mTv14.setOnClickListener(this);
+        mTv15.setOnClickListener(this);
+        mTv16.setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.tv_1:
+                startActivity(TestNormalActivity.class);
+                break;
+            case R.id.tv_2:
+                startActivity(TestFullActivity.class);
+                break;
+            case R.id.tv_3:
+                startActivity(TestTinyActivity.class);
+                break;
+            case R.id.tv_4:
+                startActivity(TestWindowActivity.class);
+                break;
+            case R.id.tv_5:
+                startActivity(TestClarityActivity.class);
+                break;
+            case R.id.tv_6:
+                startActivity(TestFragmentActivity.class);
+                break;
+            case R.id.tv_7:
+                startActivity(TestRecyclerActivity.class);
+                break;
+            case R.id.tv_8:
+                startActivity(TestEightVideoActivity.class);
+                break;
+            case R.id.tv_9:
+                startActivity(TestListActivity.class);
+                break;
+            case R.id.tv_10:
+
+                break;
+            case R.id.tv_11:
+                startActivity(TestWindowActivity.class);
+                break;
+            case R.id.tv_12:
+                break;
+            case R.id.tv_13:
+                break;
+            case R.id.tv_14:
+                break;
+            case R.id.tv_15:
+                break;
+            case R.id.tv_16:
+                break;
+            default:
+                break;
+        }
+    }
+
+    private void startActivity(Class c){
+        startActivity(new Intent(this,c));
+    }
+}

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/util/ScreenDensityUtils.java → app/src/main/java/org/yczbj/ycvideoplayer/ScreenDensityUtils.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.util;
+package org.yczbj.ycvideoplayer;
 
 
 import android.app.Activity;

+ 26 - 26
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestFiveVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestClarityActivity.java

@@ -1,39 +1,32 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.view.View;
 import android.widget.Button;
 
-import com.blankj.utilcode.util.ToastUtils;
 import com.bumptech.glide.Glide;
-import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayerlib.inter.listener.OnVideoControlListener;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
-import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
 import org.yczbj.ycvideoplayerlib.dialog.VideoClarity;
+import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import butterknife.BindView;
+import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
 
 
 /**
  * @author yc
  */
-public class TestFiveVideoActivity extends BaseActivity implements View.OnClickListener {
+public class TestClarityActivity extends BaseActivity implements View.OnClickListener {
+
 
 
-    @BindView(R.id.nice_video_player)
-    VideoPlayer mVideoPlayer;
-    @BindView(R.id.btn_tiny_1)
-    Button btnTiny1;
-    @BindView(R.id.btn_tiny_2)
-    Button btnTiny2;
+    private VideoPlayer videoPlayer;
+    private Button mBtnTiny1;
+    private Button mBtnTiny2;
 
     @Override
     protected void onStop() {
@@ -50,12 +43,18 @@ public class TestFiveVideoActivity extends BaseActivity implements View.OnClickL
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_video_third;
+        return R.layout.activity_test_video3;
     }
 
     @Override
     public void initView() {
-        mVideoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
+        StateAppBar.translucentStatusBar(this, true);
+        videoPlayer = (VideoPlayer) findViewById(R.id.nice_video_player);
+        mBtnTiny1 = (Button) findViewById(R.id.btn_tiny_1);
+        mBtnTiny2 = (Button) findViewById(R.id.btn_tiny_2);
+
+
+        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
         VideoPlayerController controller = new VideoPlayerController(this);
         controller.setTitle("Beautiful China...");
         controller.setLength(117000);
@@ -63,17 +62,17 @@ public class TestFiveVideoActivity extends BaseActivity implements View.OnClickL
         Glide.with(this)
                 .load("http://imgsrc.baidu.com/image/c0%3Dshijue%2C0%2C0%2C245%2C40/sign=304dee3ab299a9012f38537575fc600e/91529822720e0cf3f8b77cd50046f21fbe09aa5f.jpg")
                 .placeholder(R.drawable.image_default)
-                .crossFade()
                 .into(controller.imageView());
-        mVideoPlayer.setController(controller);
+        controller.setTopPadding(24);
+        videoPlayer.setController(controller);
     }
 
     @Override
     public void initListener() {
-        btnTiny1.setText("1. 全屏播放时可以切换清晰度");
-        btnTiny2.setText("2. 全屏播放");
-        btnTiny1.setOnClickListener(this);
-        btnTiny2.setOnClickListener(this);
+        mBtnTiny1.setText("1. 全屏播放时可以切换清晰度");
+        mBtnTiny2.setText("2. 全屏播放");
+        mBtnTiny1.setOnClickListener(this);
+        mBtnTiny2.setOnClickListener(this);
     }
 
     @Override
@@ -82,7 +81,6 @@ public class TestFiveVideoActivity extends BaseActivity implements View.OnClickL
     }
 
 
-
     public List<VideoClarity> getClarites() {
         List<VideoClarity> clarities = new ArrayList<>();
         clarities.add(new VideoClarity("标清", "270P", "http://play.g3proxy.lecloud.com/vod/v2/MjUxLzE2LzgvbGV0di11dHMvMTQvdmVyXzAwXzIyLTExMDc2NDEzODctYXZjLTE5OTgxOS1hYWMtNDgwMDAtNTI2MTEwLTE3MDg3NjEzLWY1OGY2YzM1NjkwZTA2ZGFmYjg2MTVlYzc5MjEyZjU4LTE0OTg1NTc2ODY4MjMubXA0?b=259&mmsid=65565355&tm=1499247143&key=f0eadb4f30c404d49ff8ebad673d3742&platid=3&splatid=345&playid=0&tss=no&vtype=21&cvid=2026135183914&payff=0&pip=08cc52f8b09acd3eff8bf31688ddeced&format=0&sign=mb&dname=mobile&expect=1&tag=mobile&xformat=super"));
@@ -95,7 +93,7 @@ public class TestFiveVideoActivity extends BaseActivity implements View.OnClickL
 
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
+        switch (v.getId()) {
             case R.id.btn_tiny_1:
 
                 break;
@@ -106,4 +104,6 @@ public class TestFiveVideoActivity extends BaseActivity implements View.OnClickL
                 break;
         }
     }
+
+
 }

+ 4 - 11
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestEightVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestEightVideoActivity.java

@@ -1,22 +1,15 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.os.Bundle;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayer.ui.test.test2.base.HomeKeyWatcher;
-import org.yczbj.ycvideoplayer.ui.test.test2.model.Video;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import butterknife.BindView;
-
 
 /**
  * @author yc
@@ -24,7 +17,6 @@ import butterknife.BindView;
 public class TestEightVideoActivity extends BaseActivity {
 
 
-    @BindView(R.id.recyclerView)
     RecyclerView recyclerView;
     private boolean pressedHome;
     private HomeKeyWatcher mHomeKeyWatcher;
@@ -78,12 +70,13 @@ public class TestEightVideoActivity extends BaseActivity {
 
     @Override
     public void initView() {
+        recyclerView = findViewById(R.id.recyclerView);
         recyclerView.setLayoutManager(new LinearLayoutManager(this));
         recyclerView.setHasFixedSize(true);
         VideoAdapter adapter;
         List<Video> list = new ArrayList<>();
         for (int a=0 ; a< ConstantVideo.VideoPlayerList.length ; a++){
-            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],10,"",ConstantVideo.VideoPlayerList[a]);
+            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],ConstantVideo.VideoPlayerList[a]);
             list.add(video);
         }
         adapter = new VideoAdapter(this, list);

+ 4 - 7
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestSixVideoFragment.java → app/src/main/java/org/yczbj/ycvideoplayer/TestFragment.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.os.Bundle;
 import android.support.annotation.Nullable;
@@ -9,11 +9,8 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.ui.test.test2.model.Video;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -23,7 +20,7 @@ import java.util.List;
  * 如果你需要在播放的时候按下Home键能暂停,回调此Fragment又继续的话,需要继承自CompatHomeKeyFragment
  * @author yc
  */
-public class TestSixVideoFragment extends Fragment {
+public class TestFragment extends Fragment {
 
     private RecyclerView mRecyclerView;
 
@@ -44,7 +41,7 @@ public class TestSixVideoFragment extends Fragment {
         mRecyclerView.setHasFixedSize(true);
         List<Video> list = new ArrayList<>();
         for (int a = 0; a< ConstantVideo.VideoPlayerList.length ; a++){
-            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],10,"",ConstantVideo.VideoPlayerList[a]);
+            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],ConstantVideo.VideoPlayerList[a]);
             list.add(video);
         }
         VideoAdapter adapter = new VideoAdapter(getActivity(), list);

+ 7 - 7
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestSixVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestFragmentActivity.java

@@ -1,14 +1,12 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 
 
 /**
  * @author yc
  */
-public class TestSixVideoActivity extends BaseActivity  {
+public class TestFragmentActivity extends BaseActivity  {
 
     @Override
     protected void onStop() {
@@ -18,21 +16,23 @@ public class TestSixVideoActivity extends BaseActivity  {
 
     @Override
     public void onBackPressed() {
-        if (VideoPlayerManager.instance().onBackPressed()) return;
+        if (VideoPlayerManager.instance().onBackPressed()) {
+            return;
+        }
         super.onBackPressed();
     }
 
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_my_four;
+        return R.layout.activity_test_fragment;
     }
 
     @Override
     public void initView() {
         getSupportFragmentManager()
                 .beginTransaction()
-                .add(R.id.container, new TestSixVideoFragment())
+                .add(R.id.container, new TestFragment())
                 .commit();
     }
 

+ 24 - 24
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestSecondFullActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestFullActivity.java

@@ -1,36 +1,26 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.view.View;
 import android.widget.Button;
-import android.widget.Toast;
 
 import com.bumptech.glide.Glide;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
 import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
-import org.yczbj.ycvideoplayerlib.inter.listener.OnVideoControlListener;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
-import butterknife.BindView;
 import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
 
 
 /**
  * @author yc
  */
-public class TestSecondFullActivity extends BaseActivity implements View.OnClickListener {
+public class TestFullActivity extends BaseActivity implements View.OnClickListener {
 
-
-    @BindView(R.id.nice_video_player)
-    VideoPlayer videoPlayer;
-    @BindView(R.id.btn_tiny_1)
-    Button btnTiny1;
-    @BindView(R.id.btn_tiny_2)
-    Button btnTiny2;
+    private VideoPlayer videoPlayer;
+    private Button mBtnTiny1;
+    private Button mBtnTiny2;
 
     @Override
     protected void onStop() {
@@ -46,9 +36,9 @@ public class TestSecondFullActivity extends BaseActivity implements View.OnClick
 
     @Override
     public void onBackPressed() {
-        if (VideoPlayerManager.instance().onBackPressed()){
+        if (VideoPlayerManager.instance().onBackPressed()) {
             return;
-        }else {
+        } else {
             VideoPlayerManager.instance().releaseVideoPlayer();
         }
         super.onBackPressed();
@@ -62,14 +52,17 @@ public class TestSecondFullActivity extends BaseActivity implements View.OnClick
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_video_second;
+        return R.layout.activity_test_video2;
     }
 
     @Override
     public void initView() {
         StateAppBar.translucentStatusBar(this, true);
+        videoPlayer = (VideoPlayer) findViewById(R.id.nice_video_player);
+        mBtnTiny1 = (Button) findViewById(R.id.btn_tiny_1);
+        mBtnTiny2 = (Button) findViewById(R.id.btn_tiny_2);
 
-        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_NATIVE);
+        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
         videoPlayer.setUp(ConstantVideo.VideoPlayerList[0], null);
         VideoPlayerController controller = new VideoPlayerController(this);
         controller.setTitle("办公室小野开番外了,居然在办公室开澡堂!老板还点赞?");
@@ -77,18 +70,24 @@ public class TestSecondFullActivity extends BaseActivity implements View.OnClick
         Glide.with(this)
                 .load("http://tanzi27niu.cdsb.mobi/wps/wp-content/uploads/2017/05/2017-05-17_17-30-43.jpg")
                 .placeholder(R.drawable.image_default)
-                .crossFade()
                 .into(controller.imageView());
         //设置中间播放按钮是否显示
-        controller.setCenterPlayer(true,R.drawable.ic_player_center_start);
+        controller.setCenterPlayer(true, R.drawable.ic_player_center_start);
         controller.setTopPadding(24.0f);
+        controller.setTopVisibility(true);
         videoPlayer.setController(controller);
+        videoPlayer.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                videoPlayer.start();
+            }
+        },500);
     }
 
     @Override
     public void initListener() {
-        btnTiny1.setOnClickListener(this);
-        btnTiny2.setOnClickListener(this);
+        mBtnTiny1.setOnClickListener(this);
+        mBtnTiny2.setOnClickListener(this);
     }
 
     @Override
@@ -98,7 +97,7 @@ public class TestSecondFullActivity extends BaseActivity implements View.OnClick
 
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
+        switch (v.getId()) {
             case R.id.btn_tiny_1:
                 if (videoPlayer.isIdle()) {
                     videoPlayer.start();
@@ -115,4 +114,5 @@ public class TestSecondFullActivity extends BaseActivity implements View.OnClick
                 break;
         }
     }
+
 }

+ 7 - 7
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestNineVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestListActivity.java

@@ -1,31 +1,31 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 
 
 /**
  * @author yc
  */
-public class TestNineVideoActivity extends BaseActivity {
+public class TestListActivity extends BaseActivity {
 
     @Override
     public void onBackPressed() {
-        if (VideoPlayerManager.instance().onBackPressed()) return;
+        if (VideoPlayerManager.instance().onBackPressed()) {
+            return;
+        }
         super.onBackPressed();
     }
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_my_four;
+        return R.layout.activity_test_fragment;
     }
 
     @Override
     public void initView() {
         getSupportFragmentManager()
                 .beginTransaction()
-                .add(R.id.container, new TestNineVideoFragment())
+                .add(R.id.container, new TestListFragment())
                 .commit();
     }
 

+ 20 - 23
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestNineVideoFragment.java → app/src/main/java/org/yczbj/ycvideoplayer/TestListFragment.java

@@ -1,42 +1,48 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.app.Fragment;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseFragment;
-import org.yczbj.ycvideoplayer.ui.test.test2.model.Video;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import butterknife.BindView;
-
 
 /**
  * 如果你需要在播放的时候按下Home键能暂停,回调此Fragment又继续的话,需要继承自CompatHomeKeyFragment
  */
-public class TestNineVideoFragment extends BaseFragment {
+public class TestListFragment extends Fragment {
 
-    @BindView(R.id.recyclerView)
     RecyclerView mRecyclerView;
 
-
+    @Nullable
     @Override
+    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        View view = inflater.inflate(getContentView(),container,false);
+        initView(view);
+        return view;
+    }
+
     public int getContentView() {
         return R.layout.base_recycler_view;
     }
 
-    @Override
-    public void initView() {
+    public void initView(View view) {
+        mRecyclerView = view.findViewById(R.id.recyclerView);
         mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
         mRecyclerView.setHasFixedSize(true);
         List<Video> list = new ArrayList<>();
         for (int a = 0; a< ConstantVideo.VideoPlayerList.length ; a++){
-            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],10,"",ConstantVideo.VideoPlayerList[a]);
+            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],ConstantVideo.VideoPlayerList[a]);
             list.add(video);
         }
         VideoAdapter adapter = new VideoAdapter(getActivity(), list);
@@ -52,15 +58,6 @@ public class TestNineVideoFragment extends BaseFragment {
         });
     }
 
-    @Override
-    public void initListener() {
-
-    }
-
-    @Override
-    public void initData() {
-
-    }
 
 
 }

+ 8 - 21
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestFirstVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestNormalActivity.java

@@ -1,15 +1,7 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
-import android.view.View;
-import android.widget.Button;
 import android.widget.ImageView;
-import android.widget.Toast;
 
-import com.bumptech.glide.Glide;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
 import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
 import org.yczbj.ycvideoplayerlib.inter.listener.OnCompletedListener;
@@ -19,21 +11,15 @@ import org.yczbj.ycvideoplayerlib.inter.listener.OnVideoControlListener;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
-import java.util.ArrayList;
-
-import butterknife.BindView;
-import cn.ycbjie.ycstatusbarlib.StatusBarUtils;
 import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
-import cn.ycbjie.ycstatusbarlib.dlBar.StatusBarView;
 
 
 /**
  * @author yc
  */
-public class TestFirstVideoActivity extends BaseActivity  {
+public class TestNormalActivity extends BaseActivity  {
 
 
-    @BindView(R.id.nice_video_player)
     VideoPlayer videoPlayer;
     private VideoPlayerController controller;
 
@@ -68,17 +54,18 @@ public class TestFirstVideoActivity extends BaseActivity  {
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_video_first;
+        return R.layout.activity_test_video1;
     }
 
     @Override
     public void initView() {
         StateAppBar.translucentStatusBar(this, true);
-
+        videoPlayer = findViewById(R.id.video_player);
         //必须关键的4步,播放视频最简单的方式
-        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_NATIVE);
+        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
         videoPlayer.setUp(ConstantVideo.VideoPlayerList[0], null);
         controller = new VideoPlayerController(this);
+        controller.setTopPadding(24.0f);
         videoPlayer.setController(controller);
     }
 
@@ -152,7 +139,7 @@ public class TestFirstVideoActivity extends BaseActivity  {
 
         //设置播放器类型,必须设置
         //输入值:ConstantKeys.IjkPlayerType.TYPE_IJK   或者  ConstantKeys.IjkPlayerType.TYPE_NATIVE
-        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_NATIVE);
+        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
         //设置播放位置
         videoPlayer.seekTo(100);
         //设置播放速度,不必须
@@ -190,7 +177,7 @@ public class TestFirstVideoActivity extends BaseActivity  {
         //重新设置
         controller.reset();
         //设置图片
-        controller.setImage(R.drawable.ic_back_right);
+        //controller.setImage(R.drawable.ic_back_right);
         //设置视频时长
         controller.setLength(1000);
         //设置视频标题

+ 5 - 11
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestSevenVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestRecyclerActivity.java

@@ -1,28 +1,21 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayer.ui.test.test2.model.Video;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import butterknife.BindView;
-
 
 /**
  * @author yc
  */
-public class TestSevenVideoActivity extends BaseActivity {
+public class TestRecyclerActivity extends BaseActivity {
 
 
-    @BindView(R.id.recyclerView)
     RecyclerView recyclerView;
 
     @Override
@@ -47,11 +40,12 @@ public class TestSevenVideoActivity extends BaseActivity {
 
     @Override
     public void initView() {
+        recyclerView = findViewById(R.id.recyclerView);
         recyclerView.setLayoutManager(new LinearLayoutManager(this));
         recyclerView.setHasFixedSize(true);
         List<Video> list = new ArrayList<>();
         for (int a = 0; a< ConstantVideo.VideoPlayerList.length ; a++){
-            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],10,"",ConstantVideo.VideoPlayerList[a]);
+            Video video = new Video(ConstantVideo.VideoPlayerTitle[a],ConstantVideo.VideoPlayerList[a]);
             list.add(video);
         }
         VideoAdapter adapter = new VideoAdapter(this, list);

+ 20 - 19
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestThirdVideoActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestTinyActivity.java

@@ -1,34 +1,29 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
+import android.net.Uri;
 import android.view.View;
 import android.widget.Button;
 import android.widget.Toast;
 
 import com.bumptech.glide.Glide;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
-import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
+import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
-import butterknife.BindView;
+import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
 
 
 /**
  * @author yc
  */
-public class TestThirdVideoActivity extends BaseActivity implements View.OnClickListener {
+public class TestTinyActivity extends BaseActivity implements View.OnClickListener {
 
 
-    @BindView(R.id.nice_video_player)
-    VideoPlayer videoPlayer;
-    @BindView(R.id.btn_tiny_1)
-    Button btnTiny1;
-    @BindView(R.id.btn_tiny_2)
-    Button btnTiny2;
+    private VideoPlayer videoPlayer;
+    private Button mBtnTiny1;
+    private Button mBtnTiny2;
 
     @Override
     protected void onStop() {
@@ -45,12 +40,18 @@ public class TestThirdVideoActivity extends BaseActivity implements View.OnClick
 
     @Override
     public int getContentView() {
-        return R.layout.activity_test_video_third;
+        return R.layout.activity_test_video3;
     }
 
     @Override
     public void initView() {
-        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_NATIVE);
+        StateAppBar.translucentStatusBar(this, true);
+        videoPlayer = (VideoPlayer) findViewById(R.id.nice_video_player);
+        mBtnTiny1 = (Button) findViewById(R.id.btn_tiny_1);
+        mBtnTiny2 = (Button) findViewById(R.id.btn_tiny_2);
+
+
+        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
         videoPlayer.setUp(ConstantVideo.VideoPlayerList[0], null);
         VideoPlayerController controller = new VideoPlayerController(this);
         controller.setLoadingType(ConstantKeys.Loading.LOADING_RING);
@@ -59,16 +60,16 @@ public class TestThirdVideoActivity extends BaseActivity implements View.OnClick
         Glide.with(this)
                 .load("http://tanzi27niu.cdsb.mobi/wps/wp-content/uploads/2017/05/2017-05-17_17-30-43.jpg")
                 .placeholder(R.drawable.image_default)
-                .crossFade()
                 .into(controller.imageView());
         controller.setHideTime(2000);
+        controller.setTopPadding(24);
         videoPlayer.setController(controller);
     }
 
     @Override
     public void initListener() {
-        btnTiny1.setOnClickListener(this);
-        btnTiny2.setOnClickListener(this);
+        mBtnTiny1.setOnClickListener(this);
+        mBtnTiny2.setOnClickListener(this);
     }
 
     @Override

+ 17 - 22
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/TestFourWindowActivity.java → app/src/main/java/org/yczbj/ycvideoplayer/TestWindowActivity.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.content.Intent;
 import android.net.Uri;
@@ -9,9 +9,6 @@ import android.view.View;
 import android.view.animation.BounceInterpolator;
 import android.widget.Button;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayer.ui.home.view.activity.EmptyActivity;
 import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
 import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.window.FloatPlayerView;
@@ -20,20 +17,15 @@ import org.yczbj.ycvideoplayerlib.window.MoveType;
 import org.yczbj.ycvideoplayerlib.window.WindowScreen;
 import org.yczbj.ycvideoplayerlib.window.WindowUtil;
 
-import butterknife.BindView;
-
 
 /**
  * @author yc
  */
-public class TestFourWindowActivity extends BaseActivity implements View.OnClickListener {
+public class TestWindowActivity extends BaseActivity implements View.OnClickListener {
 
-    @BindView(R.id.video_player)
-    VideoPlayer videoPlayer;
-    @BindView(R.id.btn_1)
-    Button btn1;
-    @BindView(R.id.btn_2)
-    Button btn2;
+    private VideoPlayer mVideoPlayer;
+    private Button mBtn1;
+    private Button mBtn2;
 
     @Override
     protected void onDestroy() {
@@ -46,7 +38,6 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
     }
 
 
-
     @Override
     public void onBackPressed() {
         if (VideoPlayerManager.instance().onBackPressed()) {
@@ -56,14 +47,18 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
     }
 
 
-
     @Override
     public int getContentView() {
-        return R.layout.activity_test_window_four;
+        return R.layout.activity_test_window;
     }
 
     @Override
     public void initView() {
+        mVideoPlayer = (VideoPlayer) findViewById(R.id.video_player);
+        mBtn1 = (Button) findViewById(R.id.btn_1);
+        mBtn1.setOnClickListener(this);
+        mBtn2 = (Button) findViewById(R.id.btn_2);
+        mBtn2.setOnClickListener(this);
         if (Build.VERSION.SDK_INT >= 23) {
             if (!WindowUtil.hasPermission(this)) {
                 requestAlertWindowPermission();
@@ -73,8 +68,6 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
 
     @Override
     public void initListener() {
-        btn1.setOnClickListener(this);
-        btn2.setOnClickListener(this);
     }
 
     @Override
@@ -84,12 +77,12 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
 
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
+        switch (v.getId()) {
             case R.id.btn_1:
                 startWindow();
                 break;
             case R.id.btn_2:
-                startActivity(new Intent(this, EmptyActivity.class));
+                startActivity(new Intent(this, TestFullActivity.class));
                 break;
             default:
                 break;
@@ -114,7 +107,8 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
                 .setView(floatPlayerView)
                 //.setWidth(WindowScreen.width, 0.4f)
                 //.setHeight(WindowScreen.width, 0.3f)
-                .setX(WindowScreen.width, 0.8f)             //这个是设置位置
+                //这个是设置位置
+                .setX(WindowScreen.width, 0.8f)
                 .setY(WindowScreen.height, 0.3f)
                 .setMoveType(MoveType.slide)
                 .setFilter(false)
@@ -136,7 +130,7 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-        if (Build.VERSION.SDK_INT >= 23){
+        if (Build.VERSION.SDK_INT >= 23) {
             if (WindowUtil.hasPermission(this)) {
 
             } else {
@@ -145,4 +139,5 @@ public class TestFourWindowActivity extends BaseActivity implements View.OnClick
         }
     }
 
+
 }

+ 28 - 0
app/src/main/java/org/yczbj/ycvideoplayer/Video.java

@@ -0,0 +1,28 @@
+package org.yczbj.ycvideoplayer;
+
+public class Video {
+
+    private String title;
+    private String url;
+
+    public Video(String title, String url) {
+        this.title = title;
+        this.url = url;
+    }
+
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 5 - 8
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/VideoAdapter.java → app/src/main/java/org/yczbj/ycvideoplayer/VideoAdapter.java

@@ -1,4 +1,4 @@
-package org.yczbj.ycvideoplayer.ui.person;
+package org.yczbj.ycvideoplayer;
 
 import android.content.Context;
 import android.support.v7.widget.RecyclerView;
@@ -6,12 +6,9 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.test.test2.model.Video;
-import org.yczbj.ycvideoplayer.util.ImageUtil;
 import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
+import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
 
 import java.util.List;
 
@@ -27,7 +24,7 @@ public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHol
 
     @Override
     public VideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_test_my_video, parent, false);
+        View itemView = LayoutInflater.from(mContext).inflate(R.layout.item_my_video, parent, false);
         VideoViewHolder holder = new VideoViewHolder(itemView);
         //创建视频播放控制器,主要只要创建一次就可以呢
         VideoPlayerController controller = new VideoPlayerController(mContext);
@@ -76,8 +73,8 @@ public class VideoAdapter extends RecyclerView.Adapter<VideoAdapter.VideoViewHol
         void bindData(Video video) {
             mController.setTitle(video.getTitle());
             //mController.setLength(video.getLength());
-            ImageUtil.loadImgByPicasso(itemView.getContext(),video.getImageUrl(),R.drawable.image_default,mController.imageView());
-            mVideoPlayer.setUp(video.getVideoUrl(), null);
+            ImageUtil.display(itemView.getContext(),video.getUrl(),R.drawable.image_default,mController.imageView());
+            mVideoPlayer.setUp(video.getUrl(), null);
         }
     }
 

+ 0 - 47
app/src/main/java/org/yczbj/ycvideoplayer/api/constant/Constant.java

@@ -1,47 +0,0 @@
-package org.yczbj.ycvideoplayer.api.constant;
-
-import org.yczbj.ycvideoplayer.R;
-
-/**
- * Description:
- * Update:
- * CreatedTime:2018/01/03
- * Author:yc
- */
-
-public class Constant {
-
-
-    public interface viewType{
-        int typeView = 0;           //自定义
-        int typeBanner = 1;         //轮播图
-        int typeGv = 2;             //九宫格
-        int typeTitle = 3;          //标题
-        int typeMore = 4;           //更多
-        int typeAd = 5;             //广告
-        int typeList2 = 6;          //list2
-        int typeAd2 = 7 ;           //广告2
-        int typeGv3 = 8;            //list3
-        int typeList4 = 9;          //list4
-        int typeGvBottom = 10;      //九宫格
-        int typeList5 = 11;          //list4
-        int typeRecycler = 12;          //list4
-    }
-
-
-    public static final long CLICK_TIME = 500;
-
-    public static final int[] ICONS_DRAWABLES = new int[]{
-            R.mipmap.ic_launcher_circle,
-            R.mipmap.ic_launcher_rect,
-            R.mipmap.ic_launcher_square};
-
-    public static final String[] ICONS_TYPE = new String[]{"circle", "rect", "square"};
-    public static final String SP_NAME = "yc";
-    public static final String KEY_IS_LOGIN = "is_login";
-    public static final String KEY_NIGHT_STATE = "night_state";
-    public static final String LOCK_SCREEN_ACTION = "cn.ycbjie.lock";
-
-
-
-}

+ 0 - 62
app/src/main/java/org/yczbj/ycvideoplayer/api/http/news/NewsApi.java

@@ -1,62 +0,0 @@
-package org.yczbj.ycvideoplayer.api.http.news;
-
-
-import org.yczbj.ycvideoplayer.ui.news.model.bean.NewsCommentBean;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
-
-import io.reactivex.Observable;
-import okhttp3.ResponseBody;
-import retrofit2.Call;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-
-/**
- * 参考 : https://github.com/hrscy/TodayNews/blob/master/news.json
- */
-
-public interface NewsApi {
-
-    String HOST = "http://is.snssdk.com/";
-
-    /**
-     * 获取个性化新闻
-     * 深圳 http://is.snssdk.com/api/news/feed/v58/?iid=5034850950&device_id=6096495334&category=news_society
-     * 深圳 http://lf.snssdk.com/api/news/feed/v58/?iid=12507202490&device_id=37487219424&category=news_society
-     * 天津 http://ib.snssdk.com/api/news/feed/v58/?
-     * 北京 http://iu.snssdk.com/api/news/feed/v58/?
-     *
-     * @param iid      用户ID
-     * @param deviceId 设备ID
-     * @param category 新闻/图片/视频栏目
-     */
-    @GET("http://is.snssdk.com/api/news/feed/v58/")
-    Call<ResponseBody> getNewsArticle(
-            @Query("iid") String iid,
-            @Query("device_id") String deviceId,
-            @Query("category") String category);
-
-    @GET("http://is.snssdk.com/api/news/feed/v62/?iid=5034850950&device_id=6096495334&refer=1&count=20&aid=13")
-    Observable<MultiNewsArticleBean> getNewsArticle(
-            @Query("category") String category,
-            @Query("max_behot_time") String maxBehotTime);
-
-    @GET("http://lf.snssdk.com/api/news/feed/v62/?iid=12507202490&device_id=37487219424&refer=1&count=20&aid=13")
-    Observable<MultiNewsArticleBean> getNewsArticle2(
-            @Query("category") String category,
-            @Query("max_behot_time") String maxBehotTime);
-
-    /**
-     * 获取新闻评论
-     * 按热度排序
-     * http://is.snssdk.com/article/v53/tab_comments/?group_id=6314103921648926977&offset=0&tab_index=0
-     * 按时间排序
-     * http://is.snssdk.com/article/v53/tab_comments/?group_id=6314103921648926977&offset=0&tab_index=1
-     *
-     * @param groupId 新闻ID
-     * @param offset  偏移量
-     */
-    @GET("http://is.snssdk.com/article/v53/tab_comments/")
-    Observable<NewsCommentBean> getNewsComment(
-            @Query("group_id") String groupId,
-            @Query("offset") int offset);
-}

+ 0 - 44
app/src/main/java/org/yczbj/ycvideoplayer/api/http/news/NewsModel.java

@@ -1,44 +0,0 @@
-package org.yczbj.ycvideoplayer.api.http.news;
-
-
-import org.yczbj.ycvideoplayer.api.http.video.VideoApi;
-import org.yczbj.ycvideoplayer.api.manager.RetrofitWrapper;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.VideoContentBean;
-
-import io.reactivex.Observable;
-
-
-/**
- * Created by PC on 2017/8/21.
- * 作者:PC
- */
-
-public class NewsModel {
-
-    private static NewsModel model;
-    private NewsApi mApiService;
-    private static final String HOST = "http://toutiao.com/";
-
-    private NewsModel() {
-        mApiService = RetrofitWrapper
-                .getInstance(HOST)
-                .create(NewsApi.class);
-    }
-
-    public static NewsModel getInstance(){
-        if(model == null) {
-            model = new NewsModel();
-        }
-        return model;
-    }
-
-    public Observable<MultiNewsArticleBean> getNewsArticle(String category, String maxBehotTime) {
-        return mApiService.getNewsArticle(category,maxBehotTime);
-    }
-
-    public Observable<MultiNewsArticleBean> getNewsArticle2(String category, String maxBehotTime) {
-        return mApiService.getNewsArticle2(category,maxBehotTime);
-    }
-
-}

+ 0 - 158
app/src/main/java/org/yczbj/ycvideoplayer/api/http/utils/InterceptorUtils.java

@@ -1,158 +0,0 @@
-package org.yczbj.ycvideoplayer.api.http.utils;
-
-import android.util.Log;
-
-import com.blankj.utilcode.util.NetworkUtils;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-
-import okhttp3.CacheControl;
-import okhttp3.Cookie;
-import okhttp3.CookieJar;
-import okhttp3.HttpUrl;
-import okhttp3.Interceptor;
-import okhttp3.OkHttpClient;
-import okhttp3.Request;
-import okhttp3.Response;
-import okhttp3.logging.HttpLoggingInterceptor;
-
-/**
- * Created by PC on 2017/9/22.
- * 作者:PC
- */
-
-public class InterceptorUtils {
-
-    /**
-     * 创建日志拦截器
-     * @return              HttpLoggingInterceptor
-     */
-    public static HttpLoggingInterceptor getHttpLoggingInterceptor(boolean debug) {
-        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() {
-            @Override
-            public void log(String message) {
-                Log.e("OkHttp", "log = " + message);
-            }
-        });
-        if (debug) {
-            // 测试
-            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
-        } else {
-            // 打包
-            loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.NONE);
-        }
-        return loggingInterceptor;
-    }
-
-
-    /**
-     * 请求头拦截器
-     * 使用addHeader()不会覆盖之前设置的header,若使用header()则会覆盖之前的header
-     * @return
-     */
-    public static Interceptor getRequestHeader() {
-        Interceptor headerInterceptor = new Interceptor() {
-            @Override
-            public Response intercept(Chain chain) throws IOException {
-                Request originalRequest = chain.request();
-                Request.Builder builder = originalRequest.newBuilder();
-                builder.addHeader("version", "1");
-                builder.addHeader("time", System.currentTimeMillis() + "");
-                Request.Builder requestBuilder = builder.method(originalRequest.method(), originalRequest.body());
-                Request request = requestBuilder.build();
-                return chain.proceed(request);
-            }
-        };
-        return headerInterceptor;
-    }
-
-    /**
-     * 统一请求拦截器
-     * 统一的请求参数
-     */
-    public static Interceptor commonParamsInterceptor() {
-        Interceptor commonParams = new Interceptor() {
-            @Override
-            public Response intercept(Chain chain) throws IOException {
-                Request originRequest = chain.request();
-                Request request;
-                HttpUrl httpUrl = originRequest.url().newBuilder()
-                        .addQueryParameter("paltform", "android")
-                        .addQueryParameter("version", "1.0.0")
-                        .build();
-                request = originRequest.newBuilder()
-                        .url(httpUrl)
-                        .build();
-                return chain.proceed(request);
-            }
-        };
-        return commonParams;
-    }
-
-    /**
-     * 在无网络的情况下读取缓存,有网络的情况下根据缓存的过期时间重新请求
-     * @return
-     */
-    public static Interceptor getCacheInterceptor() {
-        Interceptor commonParams = new Interceptor() {
-            @Override
-            public Response intercept(Chain chain) throws IOException {
-                Request request = chain.request();
-                if (!NetworkUtils.isConnected()) {
-                    //无网络下强制使用缓存,无论缓存是否过期,此时该请求实际上不会被发送出去。
-                    request = request.newBuilder()
-                            .cacheControl(CacheControl.FORCE_CACHE)
-                            .build();
-                }
-                Response response = chain.proceed(request);
-                if (NetworkUtils.isConnected()) {
-                    //有网络情况下,根据请求接口的设置,配置缓存。
-                    // 这样在下次请求时,根据缓存决定是否真正发出请求。
-                    String cacheControl = request.cacheControl().toString();
-                    //当然如果你想在有网络的情况下都直接走网络,那么只需要
-                    //将其超时时间这是为0即可:String cacheControl="Cache-Control:public,max-age=0"
-                    int maxAge = 60 * 60;
-                    // read from cache for 1 minute
-                    return response.newBuilder()
-                            .header("Cache-Control", cacheControl)
-                            .header("Cache-Control", "public, max-age=" + maxAge)
-                            .removeHeader("Pragma") .build();
-                } else { //无网络
-                    // tolerate 4-weeks stale
-                    int maxStale = 60 * 60 * 24 * 28;
-                    return response.newBuilder()
-                            .header("Cache-Control", "public,only-if-cached,max-stale=360000")
-                            .header("Cache-Control", "public,only-if-cached,max-stale=" + maxStale)
-                            .removeHeader("Pragma") .build();
-                }
-            }
-        };
-        return commonParams;
-    }
-
-    /**
-     * 自定义CookieJar
-     * @param builder
-     */
-    public static void addCookie(OkHttpClient.Builder builder){
-        builder.cookieJar(new CookieJar() {
-            private final HashMap<HttpUrl, List<Cookie>> cookieStore = new HashMap<>();
-            @Override
-            public void saveFromResponse(HttpUrl url, List<Cookie> cookies) {
-                cookieStore.put(url, cookies);
-                //保存cookie //也可以使用SP保存
-            }
-
-            @Override
-            public List<Cookie> loadForRequest(HttpUrl url) {
-                List<Cookie> cookies = cookieStore.get(url);
-                //取出cookie
-                return cookies != null ? cookies : new ArrayList<Cookie>();
-            }
-        });
-    }
-
-}

+ 0 - 32
app/src/main/java/org/yczbj/ycvideoplayer/api/http/video/VideoApi.java

@@ -1,32 +0,0 @@
-package org.yczbj.ycvideoplayer.api.http.video;
-
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.VideoContentBean;
-
-import io.reactivex.Observable;
-import retrofit2.http.GET;
-import retrofit2.http.Query;
-import retrofit2.http.Url;
-
-
-public interface VideoApi {
-
-    /**
-     * 获取视频标题等信息
-     * http://is.snssdk.com/api/news/feed/v53/?category=subv_cute&refer=1&count=20&max_behot_time=1499321562&iid=11776029171&device_id=36394312781
-     */
-    @GET("http://is.snssdk.com/api/news/feed/v62/?iid=5034850950&device_id=6096495334&refer=1&count=20&aid=13")
-    Observable<MultiNewsArticleBean> getVideoArticle(
-            @Query("category") String category,
-            @Query("max_behot_time") String maxBehotTime);
-
-    /**
-     * 获取视频信息
-     * Api 生成较复杂 详情查看
-     * http://ib.365yg.com/video/urls/v/1/toutiao/mp4/视频ID?r=17位随机数&s=加密结果
-     */
-    @GET
-    Observable<VideoContentBean> getVideoContent(@Url String url);
-
-
-}

+ 0 - 43
app/src/main/java/org/yczbj/ycvideoplayer/api/http/video/VideoModel.java

@@ -1,43 +0,0 @@
-package org.yczbj.ycvideoplayer.api.http.video;
-
-
-import org.yczbj.ycvideoplayer.api.manager.RetrofitWrapper;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.VideoContentBean;
-
-import io.reactivex.Observable;
-
-
-/**
- * Created by PC on 2017/8/21.
- * 作者:PC
- */
-
-public class VideoModel {
-
-    private static VideoModel model;
-    private VideoApi mApiService;
-    private static final String HOST = "http://toutiao.com/";
-
-    private VideoModel() {
-        mApiService = RetrofitWrapper
-                .getInstance(HOST)
-                .create(VideoApi.class);
-    }
-
-    public static VideoModel getInstance(){
-        if(model == null) {
-            model = new VideoModel();
-        }
-        return model;
-    }
-
-    public Observable<MultiNewsArticleBean> getVideoArticle(String category, String maxBehotTime) {
-        return mApiService.getVideoArticle(category,maxBehotTime);
-    }
-
-    public Observable<VideoContentBean> getVideoContent(String url) {
-        return mApiService.getVideoContent(url);
-    }
-
-}

+ 0 - 185
app/src/main/java/org/yczbj/ycvideoplayer/api/manager/RetrofitWrapper.java

@@ -1,185 +0,0 @@
-package org.yczbj.ycvideoplayer.api.manager;
-
-import com.google.gson.FieldNamingPolicy;
-import com.google.gson.FieldNamingStrategy;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-
-import org.yczbj.ycvideoplayer.api.http.utils.InterceptorUtils;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-import java.lang.reflect.Field;
-import java.security.SecureRandom;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.concurrent.TimeUnit;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import okhttp3.OkHttpClient;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/1/18
- * 描    述:RetrofitWrapper
- * 修订历史:
- * ================================================
- */
-public class RetrofitWrapper {
-
-    private static RetrofitWrapper instance;
-    private Retrofit mRetrofit;
-    private Gson gson;
-    private final OkHttpClient.Builder builder;
-
-
-    public static RetrofitWrapper getInstance(String url){
-        //synchronized 避免同时调用多个接口,导致线程并发
-        synchronized (RetrofitWrapper.class){
-            instance = new RetrofitWrapper(url);
-        }
-        return instance;
-    }
-
-
-    private RetrofitWrapper(String url) {
-        builder = new OkHttpClient.Builder();
-        //拦截日志,依赖
-        builder.addInterceptor(InterceptorUtils.getHttpLoggingInterceptor(true));
-        OkHttpClient build = builder.build();
-
-        //拦截日志,自定义拦截日志
-        //builder.addInterceptor(new LogInterceptor("YC"));
-
-        //添加请求头拦截器
-        //builder.addInterceptor(InterceptorUtils.getRequestHeader());
-
-        //添加统一请求拦截器
-        //builder.addInterceptor(InterceptorUtils.commonParamsInterceptor());
-
-        //添加缓存拦截器
-        //创建Cache
-        //File httpCacheDirectory = new File("OkHttpCache");
-        //Cache cache = new Cache(httpCacheDirectory, 10 * 1024 * 1024);
-        //builder.cache(cache);
-
-        //设置缓存
-        //builder.addNetworkInterceptor(InterceptorUtils.getCacheInterceptor());
-        //builder.addInterceptor(InterceptorUtils.getCacheInterceptor());
-
-        //添加自定义CookieJar
-        //InterceptorUtils.addCookie(builder);
-
-
-        // Install the all-trusting trust manager
-        initSSL();
-        //设置读取超时时间,连接超时时间,写入超时时间值
-        initTimeOut();
-        //错误重连
-        builder.retryOnConnectionFailure(true);
-
-        //解析json
-        gson = getJson();
-        //gson = new GsonBuilder().setLenient().create();
-        //获取实例
-        mRetrofit = new Retrofit
-                //设置OKHttpClient,如果不设置会提供一个默认的
-                .Builder()
-                //设置baseUrl
-                .baseUrl(url)
-                //添加Gson转换器
-                .addConverterFactory(GsonConverterFactory.create(gson))
-                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-                .client(build)
-                .build();
-    }
-
-
-    public <T> T create(final Class<T> service) {
-        return mRetrofit.create(service);
-    }
-
-    private Gson getJson() {
-        if (gson == null) {
-            GsonBuilder builder = new GsonBuilder();
-            builder.setLenient();
-            builder.setFieldNamingStrategy(new AnnotateNaming());
-            builder.serializeNulls();
-            gson = builder.create();
-        }
-        return gson;
-    }
-
-    private void initSSL() {
-        try {
-            final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
-                @Override
-                public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-
-                }
-
-                @Override
-                public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
-
-                }
-
-                @Override
-                public X509Certificate[] getAcceptedIssuers() {
-                    return new X509Certificate[]{};
-                }
-            }};
-            SSLContext sslContext = SSLContext.getInstance("TLS");
-            sslContext.init(null, trustAllCerts, new SecureRandom());
-            SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
-            builder.sslSocketFactory(sslSocketFactory);
-            builder.hostnameVerifier(new HostnameVerifier() {
-                @Override
-                public boolean verify(String hostname, SSLSession session) {
-                    return true;
-                }
-            });
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-
-    private void initTimeOut() {
-        builder.readTimeout(20000, TimeUnit.SECONDS);
-        builder.connectTimeout(10000, TimeUnit.SECONDS);
-        builder.writeTimeout(20000, TimeUnit.SECONDS);
-    }
-
-
-    private static class AnnotateNaming implements FieldNamingStrategy {
-        @Override
-        public String translateName(Field field) {
-            ParamNames a = field.getAnnotation(ParamNames.class);
-            return a != null ? a.value() : FieldNamingPolicy.IDENTITY.translateName(field);
-        }
-    }
-
-
-}
-
-
-@Documented
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@interface ParamNames {
-    String value();
-}

+ 0 - 55
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseConfig.java

@@ -1,55 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-
-import com.blankj.utilcode.util.SPUtils;
-
-import org.yczbj.ycvideoplayer.api.constant.Constant;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/5/14
- * 描    述:所有的配置
- * 修订历史:
- * ================================================
- */
-public enum BaseConfig {
-
-    //对象
-    INSTANCE;
-
-    private boolean isLogin;
-    private boolean isNight;
-
-
-    public void initConfig(){
-        //是否是登录状态
-        isLogin = SPUtils.getInstance(Constant.SP_NAME).getBoolean(Constant.KEY_IS_LOGIN, false);
-        //初始化夜间模式
-        isNight = SPUtils.getInstance(Constant.SP_NAME).getBoolean(Constant.KEY_NIGHT_STATE,false);
-    }
-
-    public boolean isLogin() {
-        return isLogin;
-    }
-
-    public void setLogin(boolean login) {
-        SPUtils.getInstance(Constant.SP_NAME).put(Constant.KEY_IS_LOGIN,login);
-        this.isLogin = login;
-    }
-
-    public boolean getIsLogin(){
-        isLogin = SPUtils.getInstance(Constant.SP_NAME).getBoolean(Constant.KEY_IS_LOGIN, false);
-        return isLogin;
-    }
-
-    public boolean isNight() {
-        return isNight;
-    }
-
-    public void setNight(boolean night) {
-        SPUtils.getInstance(Constant.SP_NAME).put(Constant.KEY_NIGHT_STATE,night);
-        this.isNight = night;
-    }
-}

+ 0 - 79
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseDelegateAdapter.java

@@ -1,79 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.ViewGroup;
-
-import com.alibaba.android.vlayout.DelegateAdapter;
-import com.alibaba.android.vlayout.LayoutHelper;
-import com.yc.cn.ycbaseadapterlib.BaseViewHolder;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/9/18
- * 描    述:Vlayout框架基类适配器
- * 修订历史:
- * ================================================
- */
-public class BaseDelegateAdapter extends DelegateAdapter.Adapter<BaseViewHolder> {
-
-    private LayoutHelper mLayoutHelper;
-    private int mCount = -1;
-    private int mLayoutId = -1;
-    private Context mContext;
-    private int mViewTypeItem = -1;
-
-    protected BaseDelegateAdapter(Context context, LayoutHelper layoutHelper, int layoutId, int count, int viewTypeItem) {
-        this.mContext = context;
-        this.mCount = count;
-        this.mLayoutHelper = layoutHelper;
-        this.mLayoutId = layoutId;
-        this.mViewTypeItem = viewTypeItem;
-    }
-
-    public void setData(){
-
-    }
-
-    @Override
-    public LayoutHelper onCreateLayoutHelper() {
-        return mLayoutHelper;
-    }
-
-    @Override
-    public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        if (viewType == mViewTypeItem) {
-            return new BaseViewHolder(LayoutInflater.from(mContext).inflate(mLayoutId, parent, false));
-        }
-        return null;
-    }
-
-    /**
-     * 子类adapter实现
-     * @param holder                    holder
-     * @param position                  索引
-     */
-    @Override
-    public void onBindViewHolder(BaseViewHolder holder, int position) {
-
-    }
-
-    /**
-     * 必须重写不然会出现滑动不流畅的情况
-     */
-    @Override
-    public int getItemViewType(int position) {
-        return mViewTypeItem;
-    }
-
-    /**
-     * 条目数量
-     */
-    @Override
-    public int getItemCount() {
-        return mCount;
-    }
-}

+ 0 - 28
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseDialog.java

@@ -1,28 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-import android.app.Dialog;
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.View;
-import butterknife.ButterKnife;
-
-/**
- * BaseDialog
- * Created by yc on 2015/12/28.
- */
-public abstract class BaseDialog extends Dialog {
-
-
-    public BaseDialog(Context context, int layoutId, int styleId) {
-        super(context, styleId);
-        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
-        View view ;
-        if (inflater != null) {
-            view = inflater.inflate(layoutId, null);
-            this.setContentView(view);
-            ButterKnife.bind(this);
-        }
-    }
-
-
-}

+ 0 - 86
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseFragmentFactory.java

@@ -1,86 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-import org.yczbj.ycvideoplayer.ui.news.view.fragment.NewsFragment;
-import org.yczbj.ycvideoplayer.ui.video.view.fragment.VideoFragment;
-import org.yczbj.ycvideoplayer.ui.home.view.fragment.HomeFragment;
-import org.yczbj.ycvideoplayer.ui.person.MeFragment;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/12/22
- * 描    述:Fragment工厂
- * 修订历史:
- *      备注:看《Android源码设计》一书,学习设计模式并运用
- * ================================================
- */
-public class BaseFragmentFactory {
-
-    private static BaseFragmentFactory mInstance;
-    private HomeFragment mHomeFragment;
-    private NewsFragment mNewsFragment;
-    private VideoFragment mVideoFragment;
-    private MeFragment mMeFragment;
-
-    private BaseFragmentFactory() {}
-
-    public static BaseFragmentFactory getInstance() {
-        if (mInstance == null) {
-            synchronized (BaseFragmentFactory.class) {
-                if (mInstance == null) {
-                    mInstance = new BaseFragmentFactory();
-                }
-            }
-        }
-        return mInstance;
-    }
-
-
-    public HomeFragment getHomeFragment() {
-        if (mHomeFragment == null) {
-            synchronized (BaseFragmentFactory.class) {
-                if (mHomeFragment == null) {
-                    mHomeFragment = new HomeFragment();
-                }
-            }
-        }
-        return mHomeFragment;
-    }
-
-    public NewsFragment getNewsFragment() {
-        if (mNewsFragment == null) {
-            synchronized (BaseFragmentFactory.class) {
-                if (mNewsFragment == null) {
-                    mNewsFragment = new NewsFragment();
-                }
-            }
-        }
-        return mNewsFragment;
-    }
-
-    public VideoFragment getVideoFragment() {
-        if (mVideoFragment == null) {
-            synchronized (BaseFragmentFactory.class) {
-                if (mVideoFragment == null) {
-                    mVideoFragment = new VideoFragment();
-                }
-            }
-        }
-        return mVideoFragment;
-    }
-
-
-    public MeFragment getMeFragment() {
-        if (mMeFragment == null) {
-            synchronized (BaseFragmentFactory.class) {
-                if (mMeFragment == null) {
-                    mMeFragment = new MeFragment();
-                }
-            }
-        }
-        return mMeFragment;
-    }
-
-}

+ 0 - 78
app/src/main/java/org/yczbj/ycvideoplayer/base/BaseLifecycleCallback.java

@@ -1,78 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-
-import android.app.Activity;
-import android.app.Application;
-import android.os.Bundle;
-import android.util.Log;
-
-import com.ns.yc.ycutilslib.activityManager.AppManager;
-
-
-/**
- * <pre>
- *     @author yangchong
- *     blog  : www.pedaily.cn
- *     time  : 2018/03/22
- *     desc  : 生命周期管理类
- *     revise:
- * </pre>
- */
-public class BaseLifecycleCallback implements Application.ActivityLifecycleCallbacks{
-
-    public static BaseLifecycleCallback getInstance() {
-        return HolderClass.INSTANCE;
-    }
-
-    private final static class HolderClass {
-        private final static BaseLifecycleCallback INSTANCE = new BaseLifecycleCallback();
-    }
-
-    private BaseLifecycleCallback() {}
-
-    /**
-     * 必须在 Application 的 onCreate 方法中调用
-     */
-    public void init(Application application) {
-        application.registerActivityLifecycleCallbacks(this);
-    }
-
-    @Override
-    public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
-        Log.e("Activity生命周期","onActivityCreated");
-        AppManager.getAppManager().addActivity(activity);
-    }
-
-    @Override
-    public void onActivityStarted(Activity activity) {
-        Log.e("Activity生命周期","onActivityStarted");
-    }
-
-    @Override
-    public void onActivityResumed(Activity activity) {
-        Log.e("Activity生命周期","onActivityResumed");
-    }
-
-    @Override
-    public void onActivityPaused(Activity activity) {
-        Log.e("Activity生命周期","onActivityPaused");
-    }
-
-    @Override
-    public void onActivityStopped(Activity activity) {
-        Log.e("Activity生命周期","onActivityStopped");
-    }
-
-    @Override
-    public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
-        Log.e("Activity生命周期","onActivitySaveInstanceState");
-    }
-
-    @Override
-    public void onActivityDestroyed(Activity activity) {
-        Log.e("Activity生命周期","onActivityDestroyed");
-        //将当前Activity移除到容器
-        AppManager.getAppManager().removeActivity(activity);
-    }
-
-}

+ 0 - 76
app/src/main/java/org/yczbj/ycvideoplayer/base/BasePagerAdapter.java

@@ -1,76 +0,0 @@
-package org.yczbj.ycvideoplayer.base;
-
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.view.ViewGroup;
-
-import java.util.List;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/6/21
- * 描    述:指示器adapter的公共类
- * 修订历史:
- * ================================================
- */
-public class BasePagerAdapter extends FragmentPagerAdapter {
-
-    private List<?> mFragment;
-    private List<String> mTitleList;
-
-    /**
-     * 普通,主页使用
-     */
-    public BasePagerAdapter(FragmentManager fm, List<?> mFragment) {
-        super(fm);
-        this.mFragment = mFragment;
-    }
-
-    /**
-     * 接收首页传递的标题
-     */
-    public BasePagerAdapter(FragmentManager fm, List<?> mFragment, List<String> mTitleList) {
-        super(fm);
-        this.mFragment = mFragment;
-        this.mTitleList = mTitleList;
-    }
-
-    @Override
-    public Fragment getItem(int position) {
-        return (Fragment) mFragment.get(position);
-    }
-
-    @Override
-    public int getCount() {
-        return mFragment.size();
-    }
-
-    @Override
-    public void destroyItem(ViewGroup container, int position, Object object) {
-        super.destroyItem(container, position, object);
-    }
-
-    /**
-     * 首页显示title,每日推荐等..
-     * 若有问题,移到对应单独页面
-     */
-    @Override
-    public CharSequence getPageTitle(int position) {
-        if (mTitleList != null) {
-            return mTitleList.get(position);
-        } else {
-            return "";
-        }
-    }
-
-    public void addFragmentList(List<?> fragment) {
-        this.mFragment.clear();
-        this.mFragment = null;
-        this.mFragment = fragment;
-        notifyDataSetChanged();
-    }
-
-}

+ 0 - 128
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseFragment.java

@@ -1,128 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp1;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import butterknife.ButterKnife;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/5/18
- * 描    述:所有Fragment的父类
- * 修订历史:
- * ================================================
- */
-public abstract class BaseFragment<T extends BasePresenter>  extends Fragment {
-
-    /**
-     * 将代理类通用行为抽出来
-     */
-    protected T mPresenter;
-
-    @Nullable
-    @Override
-    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(getContentView(), container , false);
-        ButterKnife.bind(this,view);
-        return view;
-    }
-
-    @Override
-    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-        if (mPresenter != null){
-            mPresenter.subscribe();
-        }
-        initView();
-        initListener();
-    }
-
-    @Override
-    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        initData();
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-    }
-
-    @Override
-    public void onDestroy() {
-        super.onDestroy();
-        if (mPresenter != null){
-            mPresenter.unSubscribe();
-        }
-        initLeakCanary();             //测试内存泄漏,正式一定要隐藏
-    }
-
-    /** 返回一个用于显示界面的布局id */
-    public abstract int getContentView();
-
-    /** 初始化View的代码写在这个方法中 */
-    public abstract void initView();
-
-    /** 初始化监听器的代码写在这个方法中 */
-    public abstract void initListener();
-
-    /** 初始数据的代码写在这个方法中,用于从服务器获取数据 */
-    public abstract void initData();
-
-    /**
-     * 通过Class跳转界面
-     **/
-    public void startActivity(Class<?> cls) {
-        startActivity(cls, null);
-    }
-
-    /**
-     * 通过Class跳转界面
-     **/
-    public void startActivityForResult(Class<?> cls, int requestCode) {
-        startActivityForResult(cls, null, requestCode);
-    }
-
-    /**
-     * 含有Bundle通过Class跳转界面
-     **/
-    public void startActivityForResult(Class<?> cls, Bundle bundle, int requestCode) {
-        Intent intent = new Intent();
-        intent.setClass(getActivity(), cls);
-        if (bundle != null) {
-            intent.putExtras(bundle);
-        }
-        startActivityForResult(intent, requestCode);
-    }
-
-    /**
-     * 含有Bundle通过Class跳转界面
-     **/
-    public void startActivity(Class<?> cls, Bundle bundle) {
-        if (getActivity()!=null){
-            Intent intent = new Intent();
-            intent.setClass(getActivity(), cls);
-            if (bundle != null) {
-                intent.putExtras(bundle);
-            }
-            startActivity(intent);
-        }
-    }
-
-    /**用来检测所有Fragment的内存泄漏*/
-    private void initLeakCanary() {
-        /*RefWatcher refWatcher = BaseApplication.getRefWatcher(getActivity());
-        refWatcher.watch(this);*/
-    }
-
-
-}

+ 0 - 72
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseLazyFragment.java

@@ -1,72 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp1;
-
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.annotation.UiThread;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/5/18
- * 描    述:懒加载Fragment基类
- * 修订历史:
- * ================================================
- */
-public abstract class BaseLazyFragment extends BaseFragment {
-
-    /**
-     * 懒加载过
-     */
-    private boolean isLazyLoaded;
-    /**
-     * Fragment的View加载完毕的标记
-     */
-    private boolean isPrepared;
-
-    /**
-     * 第一步,改变isPrepared标记
-     * 当onViewCreated()方法执行时,表明View已经加载完毕,此时改变isPrepared标记为true,并调用lazyLoad()方法
-     */
-    @Override
-    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        isPrepared = true;
-        //只有Fragment onCreateView好了
-        //另外这里调用一次lazyLoad()
-        lazyLoad();
-    }
-
-
-    /**
-     * 第二步
-     * 此方法会在onCreateView()之前执行
-     * 当viewPager中fragment改变可见状态时也会调用
-     * 当fragment 从可见到不见,或者从不可见切换到可见,都会调用此方法
-     */
-    @Override
-    public void setUserVisibleHint(boolean isVisibleToUser) {
-        super.setUserVisibleHint(isVisibleToUser);
-        lazyLoad();
-    }
-
-    /**
-     * 调用懒加载
-     * 第三步:在lazyLoad()方法中进行双重标记判断,通过后即可进行数据加载
-     */
-    private void lazyLoad() {
-        if (getUserVisibleHint() && isPrepared && !isLazyLoaded) {
-            onLazyLoad();
-            isLazyLoaded = true;
-        }
-    }
-
-    /**
-     * 第四步:定义抽象方法onLazyLoad(),具体加载数据的工作,交给子类去完成
-     */
-    @UiThread
-    public abstract void onLazyLoad();
-
-
-}

+ 0 - 18
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BasePresenter.java

@@ -1,18 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp1;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/8/18
- * 描    述:父类
- * 修订历史:
- * ================================================
- */
-public interface BasePresenter {
-
-    //绑定数据
-    void subscribe();
-    //解除绑定
-    void unSubscribe();
-}

+ 0 - 15
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp1/BaseView.java

@@ -1,15 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp1;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/8/18
- * 描    述:父类
- * 修订历史:
- * ================================================
- */
-public interface BaseView {
-
-}

+ 0 - 132
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList1Fragment.java

@@ -1,132 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-
-import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.model.LoadingEndBean;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-import io.reactivex.Observable;
-import io.reactivex.annotations.NonNull;
-import io.reactivex.functions.Consumer;
-import me.drakeet.multitype.Items;
-import me.drakeet.multitype.MultiTypeAdapter;
-
-
-public abstract class BaseList1Fragment<T extends IBasePresenter> extends BaseMVPLazyFragment<T> implements IBaseListView<T>, SwipeRefreshLayout.OnRefreshListener {
-
-    public static final String TAG = "BaseListFragment";
-    protected RecyclerView recyclerView;
-    protected SwipeRefreshLayout swipeRefreshLayout;
-    protected MultiTypeAdapter adapter;
-    protected Items oldItems = new Items();
-    protected boolean canLoadMore = false;
-    protected Observable<Integer> observable;
-
-    @Override
-    protected int attachLayoutId() {
-        return R.layout.base_refresh_recycler_view;
-    }
-
-    @Override
-    protected void initView(View view) {
-        recyclerView = view.findViewById(R.id.recyclerView);
-        recyclerView.setHasFixedSize(true);
-        swipeRefreshLayout = view.findViewById(R.id.refresh);
-        swipeRefreshLayout.setColorSchemeColors(SettingUtil.getInstance().getColor());
-        swipeRefreshLayout.setOnRefreshListener(this);
-    }
-
-    @Override
-    public void onShowLoading() {
-        swipeRefreshLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                swipeRefreshLayout.setRefreshing(true);
-            }
-        });
-    }
-
-    @Override
-    public void onHideLoading() {
-        swipeRefreshLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                swipeRefreshLayout.setRefreshing(false);
-            }
-        });
-    }
-
-    @Override
-    public void fetchData() {
-        observable = RxBus.getInstance().register(BaseList1Fragment.TAG);
-        observable.subscribe(new Consumer<Integer>() {
-            @Override
-            public void accept(@NonNull Integer integer) throws Exception {
-                adapter.notifyDataSetChanged();
-            }
-        });
-    }
-
-    @Override
-    public void onShowNetError() {
-        ToastUtil.showToast(getActivity(),getString(R.string.network_error));
-        getActivity().runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                adapter.setItems(new Items());
-                adapter.notifyDataSetChanged();
-                canLoadMore = false;
-            }
-        });
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        // 设置下拉刷新的按钮的颜色
-        swipeRefreshLayout.setColorSchemeColors(SettingUtil.getInstance().getColor());
-    }
-
-    @Override
-    public void onShowNoMore() {
-        getActivity().runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                if (oldItems.size() > 0) {
-                    Items newItems = new Items(oldItems);
-                    newItems.remove(newItems.size() - 1);
-                    newItems.add(new LoadingEndBean());
-                    adapter.setItems(newItems);
-                    adapter.notifyDataSetChanged();
-                } else if (oldItems.size() == 0) {
-                    oldItems.add(new LoadingEndBean());
-                    adapter.setItems(oldItems);
-                    adapter.notifyDataSetChanged();
-                }
-                canLoadMore = false;
-            }
-        });
-    }
-
-    @Override
-    public void onRefresh() {
-        int firstVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
-        if (firstVisibleItemPosition == 0) {
-            presenter.doRefresh();
-            return;
-        }
-        recyclerView.scrollToPosition(5);
-        recyclerView.smoothScrollToPosition(0);
-    }
-
-    @Override
-    public void onDestroy() {
-        RxBus.getInstance().unregister(BaseList1Fragment.TAG, observable);
-        super.onDestroy();
-    }
-}

+ 0 - 134
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList2Fragment.java

@@ -1,134 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-
-
-import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.model.LoadingEndBean;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-
-import io.reactivex.Observable;
-import io.reactivex.annotations.NonNull;
-import io.reactivex.functions.Consumer;
-import me.drakeet.multitype.Items;
-import me.drakeet.multitype.MultiTypeAdapter;
-
-
-public abstract class BaseList2Fragment<T extends IBasePresenter> extends BaseMVPLazyFragment<T> implements IBaseListView<T>, SwipeRefreshLayout.OnRefreshListener {
-
-    public static final String TAG = "BaseListFragment";
-    protected RecyclerView recyclerView;
-    protected SwipeRefreshLayout swipeRefreshLayout;
-    protected MultiTypeAdapter adapter;
-    protected Items oldItems = new Items();
-    protected boolean canLoadMore = false;
-    protected Observable<Integer> observable;
-
-    @Override
-    protected int attachLayoutId() {
-        return R.layout.base_refresh_recycler_view;
-    }
-
-    @Override
-    protected void initView(View view) {
-        recyclerView = view.findViewById(R.id.recyclerView);
-        recyclerView.setHasFixedSize(true);
-        swipeRefreshLayout = view.findViewById(R.id.refresh);
-        swipeRefreshLayout.setColorSchemeColors(SettingUtil.getInstance().getColor());
-        swipeRefreshLayout.setOnRefreshListener(this);
-    }
-
-    @Override
-    public void onShowLoading() {
-        swipeRefreshLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                swipeRefreshLayout.setRefreshing(true);
-            }
-        });
-    }
-
-    @Override
-    public void onHideLoading() {
-        swipeRefreshLayout.post(new Runnable() {
-            @Override
-            public void run() {
-                swipeRefreshLayout.setRefreshing(false);
-            }
-        });
-    }
-
-    @Override
-    public void fetchData() {
-        observable = RxBus.getInstance().register(BaseList2Fragment.TAG);
-        observable.subscribe(new Consumer<Integer>() {
-            @Override
-            public void accept(@NonNull Integer integer) throws Exception {
-                adapter.notifyDataSetChanged();
-            }
-        });
-    }
-
-    @Override
-    public void onShowNetError() {
-        ToastUtil.showToast(getActivity(),getString(R.string.network_error));
-        getActivity().runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                adapter.setItems(new Items());
-                adapter.notifyDataSetChanged();
-                canLoadMore = false;
-            }
-        });
-    }
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        // 设置下拉刷新的按钮的颜色
-        swipeRefreshLayout.setColorSchemeColors(SettingUtil.getInstance().getColor());
-    }
-
-    @Override
-    public void onShowNoMore() {
-        getActivity().runOnUiThread(new Runnable() {
-            @Override
-            public void run() {
-                if (oldItems.size() > 0) {
-                    Items newItems = new Items(oldItems);
-                    newItems.remove(newItems.size() - 1);
-                    newItems.add(new LoadingEndBean());
-                    adapter.setItems(newItems);
-                    adapter.notifyDataSetChanged();
-                } else if (oldItems.size() == 0) {
-                    oldItems.add(new LoadingEndBean());
-                    adapter.setItems(oldItems);
-                    adapter.notifyDataSetChanged();
-                }
-                canLoadMore = false;
-            }
-        });
-    }
-
-    @Override
-    public void onRefresh() {
-        int firstVisibleItemPosition = ((LinearLayoutManager) recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
-        if (firstVisibleItemPosition == 0) {
-            presenter.doRefresh();
-            return;
-        }
-        recyclerView.scrollToPosition(5);
-        recyclerView.smoothScrollToPosition(0);
-    }
-
-    @Override
-    public void onDestroy() {
-        RxBus.getInstance().unregister(BaseList2Fragment.TAG, observable);
-        super.onDestroy();
-    }
-}

+ 0 - 110
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPActivity.java

@@ -1,110 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.app.ActivityManager;
-import android.content.ComponentName;
-import android.content.pm.PackageManager;
-import android.graphics.BitmapFactory;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.os.Build;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
-import android.view.MenuItem;
-
-
-import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.Constant;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-
-
-public abstract class BaseMVPActivity extends RxAppCompatActivity {
-
-    private int iconType = -1;
-
-    /**
-     * 初始化 Toolbar
-     */
-    @SuppressWarnings("ConstantConditions")
-    protected void initToolBar(Toolbar toolbar, boolean homeAsUpEnabled, String title) {
-        toolbar.setTitle(title);
-        setSupportActionBar(toolbar);
-        getSupportActionBar().setDisplayHomeAsUpEnabled(homeAsUpEnabled);
-    }
-
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.iconType = SettingUtil.getInstance().getCustomIconValue();
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        int color = SettingUtil.getInstance().getColor();
-        int drawable = Constant.ICONS_DRAWABLES[SettingUtil.getInstance().getCustomIconValue()];
-        if (getSupportActionBar() != null){
-            getSupportActionBar().setBackgroundDrawable(new ColorDrawable(color));
-        }
-        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
-            //getWindow().setStatusBarColor(CircleView.shiftColorDown(color));
-            // 最近任务栏上色
-            ActivityManager.TaskDescription tDesc = new ActivityManager.TaskDescription(
-                    getString(R.string.app_name),
-                    BitmapFactory.decodeResource(getResources(), drawable),
-                    color);
-            setTaskDescription(tDesc);
-            if (SettingUtil.getInstance().getNavBar()) {
-                //getWindow().setNavigationBarColor(CircleView.shiftColorDown(color));
-            } else {
-                getWindow().setNavigationBarColor(Color.BLACK);
-            }
-        }
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (item.getItemId() == android.R.id.home) {
-            onBackPressed();
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-
-    @Override
-    public void onBackPressed() {
-        // Fragment 逐个出栈
-        int count = getSupportFragmentManager().getBackStackEntryCount();
-        if (count == 0) {
-            super.onBackPressed();
-        } else {
-            getSupportFragmentManager().popBackStack();
-        }
-    }
-
-    @Override
-    protected void onStop() {
-        if (iconType != SettingUtil.getInstance().getCustomIconValue()) {
-            new Thread(new Runnable() {
-                @Override
-                public void run() {
-                    String act = ".SplashActivity_";
-                    for (String s : Constant.ICONS_TYPE) {
-                        getPackageManager().setComponentEnabledSetting(new ComponentName(BaseMVPActivity.this, getPackageName() + act + s),
-                                PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
-                                PackageManager.DONT_KILL_APP);
-                    }
-                    act += Constant.ICONS_TYPE[SettingUtil.getInstance().getCustomIconValue()];
-                    getPackageManager().setComponentEnabledSetting(
-                            new ComponentName(BaseMVPActivity.this, getPackageName() + act),
-                            PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
-                            PackageManager.DONT_KILL_APP);
-                }
-            }).start();
-        }
-        super.onStop();
-    }
-}

+ 0 - 65
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPFragment.java

@@ -1,65 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.Toolbar;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import com.trello.rxlifecycle2.LifecycleTransformer;
-import com.trello.rxlifecycle2.android.FragmentEvent;
-import com.trello.rxlifecycle2.components.support.RxFragment;
-
-
-public abstract class BaseMVPFragment<T extends IBasePresenter> extends RxFragment implements IBaseView<T> {
-
-    protected T presenter;
-
-    /**
-     * 绑定布局文件
-     *
-     * @return 布局文件ID
-     */
-    protected abstract int attachLayoutId();
-
-    /**
-     * 初始化视图控件
-     */
-    protected abstract void initView(View view);
-
-    /**
-     * 初始化数据
-     */
-    protected abstract void initData() throws NullPointerException;
-
-    /**
-     * 初始化 Toolbar
-     */
-    protected void initToolBar(Toolbar toolbar, boolean homeAsUpEnabled, String title) {
-        ((BaseMVPActivity) getActivity()).initToolBar(toolbar, homeAsUpEnabled, title);
-    }
-
-    @Override
-    public void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setPresenter(presenter);
-    }
-
-    @Nullable
-    @Override
-    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
-        View view = inflater.inflate(attachLayoutId(), container, false);
-        initView(view);
-        initData();
-        return view;
-    }
-
-    /**
-     * 绑定生命周期
-     */
-    @Override
-    public <T> LifecycleTransformer<T> bindToLife() {
-        return bindUntilEvent(FragmentEvent.DESTROY);
-    }
-}

+ 0 - 100
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseMVPLazyFragment.java

@@ -1,100 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.os.Bundle;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2018/2/24
- * 描    述:预加载
- * 修订历史:
- * ================================================
- */
-public abstract class BaseMVPLazyFragment<T extends IBasePresenter> extends BaseMVPFragment<T> {
-
-    /**
-     * Fragment的View加载完毕的标记
-     */
-    protected boolean isViewInitiated;
-    /**
-     * Fragment对用户可见的标记
-     */
-    protected boolean isVisibleToUser;
-    /**
-     * 数据是否初始化
-     */
-    protected boolean isDataInitiated;
-
-    @Override
-    public void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-    }
-
-    /**
-     * 第一步,改变isViewInitiated标记
-     * 当onViewCreated()方法执行时,表明View已经加载完毕,此时改变isViewInitiated标记为true,并调用lazyLoad()方法
-     */
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-        isViewInitiated = true;
-        //只有Fragment onCreateView好了,
-        //另外这里调用一次lazyLoad()
-        prepareFetchData();
-        //lazyLoad();
-    }
-
-    /**
-     * 第二步
-     * 此方法会在onCreateView()之前执行
-     * 当viewPager中fragment改变可见状态时也会调用
-     * 当fragment 从可见到不见,或者从不可见切换到可见,都会调用此方法
-     */
-    @Override
-    public void setUserVisibleHint(boolean isVisibleToUser) {
-        super.setUserVisibleHint(isVisibleToUser);
-        this.isVisibleToUser = isVisibleToUser;
-        prepareFetchData();
-    }
-
-    /**
-     * 第四步:定义抽象方法fetchData(),具体加载数据的工作,交给子类去完成
-     */
-    public abstract void fetchData();
-
-    /**
-     * 第三步:在lazyLoad()方法中进行双重标记判断,通过后即可进行数据加载
-     * 第一种方法
-     * 调用懒加载,getUserVisibleHint()会返回是否可见状态
-     * 这是fragment实现懒加载的关键,只有fragment 可见才会调用onLazyLoad() 加载数据
-     */
-    private void lazyLoad() {
-        if (getUserVisibleHint() && isViewInitiated && !isDataInitiated) {
-            fetchData();
-            isDataInitiated = true;
-        }
-    }
-
-    /**
-     * 第二种方法
-     * 调用懒加载
-     */
-    public boolean prepareFetchData() {
-        return prepareFetchData(false);
-    }
-
-    /**
-     * 第三步:在lazyLoad()方法中进行双重标记判断,通过后即可进行数据加载
-     * 用户强制刷新的话,就应该是用户主动进行刷新了,当然也要去取数据了,用户第一嘛
-     */
-    public boolean prepareFetchData(boolean forceUpdate) {
-        if (isVisibleToUser && isViewInitiated && (!isDataInitiated || forceUpdate)) {
-            fetchData();
-            isDataInitiated = true;
-            return true;
-        }
-        return false;
-    }
-
-}

+ 0 - 49
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBaseListView.java

@@ -1,49 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import com.trello.rxlifecycle2.LifecycleTransformer;
-
-import java.util.List;
-
-
-public interface IBaseListView<T> extends IBaseView<T> {
-
-    /**
-     * 显示加载动画
-     */
-    @Override
-    void onShowLoading();
-
-    /**
-     * 隐藏加载
-     */
-    @Override
-    void onHideLoading();
-
-    /**
-     * 显示网络错误
-     */
-    @Override
-    void onShowNetError();
-
-    /**
-     * 设置 presenter
-     */
-    @Override
-    void setPresenter(T presenter);
-
-    /**
-     * 绑定生命周期
-     */
-    @Override
-    <T> LifecycleTransformer<T> bindToLife();
-
-    /**
-     * 设置适配器
-     */
-    void onSetAdapter(List<?> list);
-
-    /**
-     * 加载完毕
-     */
-    void onShowNoMore();
-}

+ 0 - 15
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBasePresenter.java

@@ -1,15 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-
-public interface IBasePresenter {
-
-    /**
-     * 刷新数据
-     */
-    void doRefresh();
-
-    /**
-     * 显示网络错误
-     */
-    void doShowNetError();
-}

+ 0 - 32
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/IBaseView.java

@@ -1,32 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-
-import com.trello.rxlifecycle2.LifecycleTransformer;
-
-public interface IBaseView<T> {
-
-    /**
-     * 显示加载动画
-     */
-    void onShowLoading();
-
-    /**
-     * 隐藏加载
-     */
-    void onHideLoading();
-
-    /**
-     * 显示网络错误
-     */
-    void onShowNetError();
-
-    /**
-     * 设置 presenter
-     */
-    void setPresenter(T presenter);
-
-    /**
-     * 绑定生命周期
-     */
-    <T> LifecycleTransformer<T> bindToLife();
-}

+ 0 - 76
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/RxBus.java

@@ -1,76 +0,0 @@
-package org.yczbj.ycvideoplayer.base.mvp2;
-
-import android.support.annotation.NonNull;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-
-import io.reactivex.Observable;
-import io.reactivex.subjects.PublishSubject;
-import io.reactivex.subjects.Subject;
-
-/**
- * https://juejin.im/entry/58ff2e26a0bb9f0065d2c5f2
- */
-public class RxBus {
-
-    private ConcurrentHashMap<Object, List<Subject>> subjectMapper = new ConcurrentHashMap<>();
-
-    private RxBus() {
-
-    }
-
-    @NonNull
-    public static RxBus getInstance() {
-        return Holder.instance;
-    }
-
-    @NonNull
-    public <T> Observable<T> register(@NonNull Class<T> clz) {
-        return register(clz.getName());
-    }
-
-    @NonNull
-    public <T> Observable<T> register(@NonNull Object tag) {
-        List<Subject> subjectList = subjectMapper.get(tag);
-        if (null == subjectList) {
-            subjectList = new ArrayList<>();
-            subjectMapper.put(tag, subjectList);
-        }
-        Subject<T> subject = PublishSubject.create();
-        subjectList.add(subject);
-        return subject;
-    }
-
-    public <T> void unregister(@NonNull Class<T> clz, @NonNull Observable observable) {
-        unregister(clz.getName(), observable);
-    }
-
-    public void unregister(@NonNull Object tag, @NonNull Observable observable) {
-        List<Subject> subjects = subjectMapper.get(tag);
-        if (null != subjects) {
-            subjects.remove(observable);
-            if (subjects.isEmpty()) {
-                subjectMapper.remove(tag);
-            }
-        }
-    }
-
-    public void post(@NonNull Object content) {
-        post(content.getClass().getName(), content);
-    }
-
-    public void post(@NonNull Object tag, @NonNull Object content) {
-        List<Subject> subjects = subjectMapper.get(tag);
-        if (!subjects.isEmpty()) {
-            for (Subject subject : subjects) {
-                subject.onNext(content);
-            }
-        }
-    }
-
-    private static class Holder {
-        private static RxBus instance = new RxBus();
-    }
-}

+ 0 - 10
app/src/main/java/org/yczbj/ycvideoplayer/listener/OnItemLongClickListener.java

@@ -1,10 +0,0 @@
-package org.yczbj.ycvideoplayer.listener;
-
-import android.view.View;
-
-
-public interface OnItemLongClickListener {
-
-    void onLongClick(View view, int position);
-
-}

+ 0 - 10
app/src/main/java/org/yczbj/ycvideoplayer/listener/OnListItemClickListener.java

@@ -1,10 +0,0 @@
-package org.yczbj.ycvideoplayer.listener;
-
-import android.view.View;
-
-
-public interface OnListItemClickListener {
-
-    void onItemClick(View view, int position);
-
-}

+ 0 - 42
app/src/main/java/org/yczbj/ycvideoplayer/listener/OnLoadMoreListener.java

@@ -1,42 +0,0 @@
-package org.yczbj.ycvideoplayer.listener;
-
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.util.Log;
-
-public abstract class OnLoadMoreListener extends RecyclerView.OnScrollListener {
-
-    private LinearLayoutManager layoutManager;
-    private int itemCount, lastPosition, lastItemCount;
-
-    public abstract void onLoadMore();
-
-    @Override
-    public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-        if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
-            layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
-            itemCount = layoutManager.getItemCount();
-            lastPosition = layoutManager.findLastCompletelyVisibleItemPosition();
-        } else {
-            Log.e("OnLoadMoreListener", "The OnLoadMoreListener only support LinearLayoutManager");
-            return;
-        }
-        if (lastItemCount != itemCount && lastPosition == itemCount - 1) {
-            lastItemCount = itemCount;
-            this.onLoadMore();
-        }
-    }
-
-    @Override
-    public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-        super.onScrollStateChanged(recyclerView, newState);
-        if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
-            if (newState == RecyclerView.SCROLL_STATE_IDLE) {
-                if (!recyclerView.canScrollVertically(1)) {
-                    this.onLoadMore();
-                }
-            }
-        }
-    }
-
-}

+ 0 - 5
app/src/main/java/org/yczbj/ycvideoplayer/model/LoadingBean.java

@@ -1,5 +0,0 @@
-package org.yczbj.ycvideoplayer.model;
-
-public class LoadingBean {
-
-}

+ 0 - 6
app/src/main/java/org/yczbj/ycvideoplayer/model/LoadingEndBean.java

@@ -1,6 +0,0 @@
-package org.yczbj.ycvideoplayer.model;
-
-
-public class LoadingEndBean {
-
-}

+ 0 - 31
app/src/main/java/org/yczbj/ycvideoplayer/model/bean/TabEntity.java

@@ -1,31 +0,0 @@
-package org.yczbj.ycvideoplayer.model.bean;
-
-import com.flyco.tablayout.listener.CustomTabEntity;
-
-public class TabEntity implements CustomTabEntity {
-
-    public String title;
-    private int selectedIcon;
-    private int unSelectedIcon;
-
-    public TabEntity(String title, int selectedIcon, int unSelectedIcon) {
-        this.title = title;
-        this.selectedIcon = selectedIcon;
-        this.unSelectedIcon = unSelectedIcon;
-    }
-
-    @Override
-    public String getTabTitle() {
-        return title;
-    }
-
-    @Override
-    public int getTabSelectedIcon() {
-        return selectedIcon;
-    }
-
-    @Override
-    public int getTabUnselectedIcon() {
-        return unSelectedIcon;
-    }
-}

+ 0 - 34
app/src/main/java/org/yczbj/ycvideoplayer/model/binder/LoadingEndViewBinder.java

@@ -1,34 +0,0 @@
-package org.yczbj.ycvideoplayer.model.binder;
-
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.model.LoadingEndBean;
-
-import me.drakeet.multitype.ItemViewBinder;
-
-
-public class LoadingEndViewBinder extends ItemViewBinder<LoadingEndBean, LoadingEndViewBinder.ViewHolder> {
-
-    @NonNull
-    @Override
-    protected LoadingEndViewBinder.ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
-        View view = inflater.inflate(R.layout.view_recycle_no_more, parent, false);
-        return new ViewHolder(view);
-    }
-
-    @Override
-    protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull LoadingEndBean item) {
-
-    }
-
-    class ViewHolder extends RecyclerView.ViewHolder {
-        ViewHolder(View itemView) {
-            super(itemView);
-        }
-    }
-}

+ 0 - 51
app/src/main/java/org/yczbj/ycvideoplayer/model/binder/LoadingViewBinder.java

@@ -1,51 +0,0 @@
-package org.yczbj.ycvideoplayer.model.binder;
-
-import android.graphics.PorterDuff;
-import android.graphics.drawable.Drawable;
-import android.os.Build;
-import android.support.annotation.NonNull;
-import android.support.v4.graphics.drawable.DrawableCompat;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ProgressBar;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.model.LoadingBean;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-
-import me.drakeet.multitype.ItemViewBinder;
-
-
-public class LoadingViewBinder extends ItemViewBinder<LoadingBean, LoadingViewBinder.ViewHolder> {
-
-    @NonNull
-    @Override
-    protected LoadingViewBinder.ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
-        View view = inflater.inflate(R.layout.view_recycle_loading, parent, false);
-        return new ViewHolder(view);
-    }
-
-    @Override
-    protected void onBindViewHolder(@NonNull ViewHolder holder, @NonNull LoadingBean item) {
-        int color = SettingUtil.getInstance().getColor();
-        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
-            Drawable wrapDrawable = DrawableCompat.wrap(holder.progressBar.getIndeterminateDrawable());
-            DrawableCompat.setTint(wrapDrawable, color);
-            holder.progressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable));
-        } else {
-            holder.progressBar.getIndeterminateDrawable().setColorFilter(color, PorterDuff.Mode.SRC_IN);
-        }
-    }
-
-    class ViewHolder extends RecyclerView.ViewHolder {
-
-        private ProgressBar progressBar;
-
-        ViewHolder(View itemView) {
-            super(itemView);
-            this.progressBar = itemView.findViewById(R.id.progress_footer);
-        }
-    }
-}

+ 0 - 27
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/HomeContract.java

@@ -1,27 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.contract;
-
-
-import org.yczbj.ycvideoplayer.base.mvp1.BasePresenter;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseView;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Home主页面
- * 修订历史:
- * ================================================
- */
-public interface HomeContract {
-
-    interface View extends BaseView {
-
-    }
-
-    interface Presenter extends BasePresenter {
-
-    }
-
-
-}

+ 0 - 36
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/VideoPlayerJzContract.java

@@ -1,36 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.contract;
-
-
-import android.support.v7.app.AppCompatActivity;
-
-import org.yczbj.ycvideoplayer.base.mvp1.BasePresenter;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseView;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-
-import java.util.List;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:
- * 修订历史:
- * ================================================
- */
-public interface VideoPlayerJzContract {
-
-    //View(activity/fragment)继承,需要实现的方法
-    interface View extends BaseView {
-        void setAdapterView(List<VideoPlayerComment> comments);
-    }
-
-    //Presenter控制器
-    interface Presenter extends BasePresenter {
-        void bindView(AppCompatActivity activity);
-        void getData();
-    }
-
-
-
-}

+ 0 - 36
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/contract/VideoPlayerMeContract.java

@@ -1,36 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.contract;
-
-
-import android.support.v7.app.AppCompatActivity;
-
-import org.yczbj.ycvideoplayer.base.mvp1.BasePresenter;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseView;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-
-import java.util.List;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:
- * 修订历史:
- * ================================================
- */
-public interface VideoPlayerMeContract {
-
-    //View(activity/fragment)继承,需要实现的方法
-    interface View extends BaseView {
-        void setAdapterView(List<VideoPlayerComment> comments);
-    }
-
-    //Presenter控制器
-    interface Presenter extends BasePresenter {
-        void bindView(AppCompatActivity activity);
-        void getData();
-        void startDownload();
-    }
-
-
-}

+ 0 - 61
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/DialogListBean.java

@@ -1,61 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.model;
-
-/**
- * Created by yc on 2018/1/10.
- */
-
-public class DialogListBean {
-
-    private String logo;
-    private String name;
-    private String title;
-    private String video;
-    private int id;
-
-    public DialogListBean(String logo, String name, String title , String video) {
-        this.logo = logo;
-        this.name = name;
-        this.title = title;
-        this.video = video;
-    }
-
-    public String getLogo() {
-        return logo;
-    }
-
-    public void setLogo(String logo) {
-        this.logo = logo;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getVideo() {
-        return video;
-    }
-
-    public void setVideo(String video) {
-        this.video = video;
-    }
-
-    public int getId() {
-        return id;
-    }
-
-    public void setId(int id) {
-        this.id = id;
-    }
-}

+ 0 - 58
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/VideoPlayerComment.java

@@ -1,58 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.model;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2018/1/9
- * 描    述:视频播放器详情页面评论实体类
- * 修订历史:
- * ================================================
- */
-public class VideoPlayerComment {
-
-    private int userLogo;
-    private String name;
-    private int zan;
-    private String content;
-
-    public VideoPlayerComment(int userLogo, String name, int zan, String content) {
-        this.userLogo = userLogo;
-        this.name = name;
-        this.zan = zan;
-        this.content = content;
-    }
-
-    public int getUserLogo() {
-        return userLogo;
-    }
-
-    public void setUserLogo(int userLogo) {
-        this.userLogo = userLogo;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public int getZan() {
-        return zan;
-    }
-
-    public void setZan(int zan) {
-        this.zan = zan;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-}

+ 0 - 48
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/model/VideoPlayerFavorite.java

@@ -1,48 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.model;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2018/1/9
- * 描    述:视频播放器详情页面猜你喜欢实体类
- * 修订历史:
- * ================================================
- */
-public class VideoPlayerFavorite {
-
-    private String title;
-    private int logoUrl;
-    private String url;
-
-    public VideoPlayerFavorite(String title, int logoUrl, String url) {
-        this.title = title;
-        this.logoUrl = logoUrl;
-        this.url = url;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public int getLogoUrl() {
-        return logoUrl;
-    }
-
-    public void setLogoUrl(int logoUrl) {
-        this.logoUrl = logoUrl;
-    }
-
-    public String getUrl() {
-        return url;
-    }
-
-    public void setUrl(String url) {
-        this.url = url;
-    }
-}

+ 0 - 48
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/HomePresenter.java

@@ -1,48 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.presenter;
-
-import android.app.Activity;
-
-import com.flyco.tablayout.listener.CustomTabEntity;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.contract.HomeContract;
-
-import io.reactivex.CompletableEmitter;
-import io.reactivex.CompletableOnSubscribe;
-import io.reactivex.disposables.CompositeDisposable;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Home主页面
- * 修订历史:
- * ================================================
- */
-public class HomePresenter implements HomeContract.Presenter {
-
-    private HomeContract.View mView;
-    private CompositeDisposable mSubscriptions;
-    private Activity activity;
-
-    public HomePresenter(HomeContract.View androidView) {
-        this.mView = androidView;
-    }
-
-    @Override
-    public void subscribe() {
-
-    }
-
-
-    @Override
-    public void unSubscribe() {
-        if(activity!=null){
-            activity = null;
-        }
-    }
-
-
-}

+ 0 - 68
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/VideoPlayerJzPresenter.java

@@ -1,68 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.presenter;
-
-import android.app.Activity;
-import android.support.v7.app.AppCompatActivity;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.contract.VideoPlayerJzContract;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import io.reactivex.CompletableObserver;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.disposables.Disposable;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Main主页面
- * 修订历史:
- * ================================================
- */
-public class VideoPlayerJzPresenter implements VideoPlayerJzContract.Presenter {
-
-    private VideoPlayerJzContract.View mView;
-    private CompositeDisposable mSubscriptions;
-    private Activity activity;
-
-    public VideoPlayerJzPresenter(VideoPlayerJzContract.View androidView) {
-        this.mView = androidView;
-        mSubscriptions = new CompositeDisposable();
-    }
-
-    @Override
-    public void subscribe() {
-
-    }
-
-
-    @Override
-    public void unSubscribe() {
-        mSubscriptions.clear();
-        if(activity!=null){
-            activity = null;
-        }
-    }
-
-
-    @Override
-    public void bindView(AppCompatActivity activity) {
-        this.activity = activity;
-    }
-
-    @Override
-    public void getData() {
-        List<VideoPlayerComment> comments = new ArrayList<>();
-        for(int a=0 ; a<20 ; a++){
-            VideoPlayerComment videoPlayerComment = new VideoPlayerComment(
-                    R.drawable.battery_10,"潇湘剑雨",5,"这个仿优酷视频Ui太好呢");
-            comments.add(videoPlayerComment);
-        }
-        mView.setAdapterView(comments);
-    }
-}

+ 0 - 78
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/presenter/VideoPlayerMePresenter.java

@@ -1,78 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.presenter;
-
-import android.app.Activity;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-
-import com.flyco.tablayout.listener.CustomTabEntity;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.contract.VideoPlayerMeContract;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import io.reactivex.disposables.CompositeDisposable;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Main主页面
- * 修订历史:
- * ================================================
- */
-public class VideoPlayerMePresenter implements VideoPlayerMeContract.Presenter {
-
-    private VideoPlayerMeContract.View mView;
-    private CompositeDisposable mSubscriptions;
-    private Activity activity;
-
-    public VideoPlayerMePresenter(VideoPlayerMeContract.View androidView) {
-        this.mView = androidView;
-        mSubscriptions = new CompositeDisposable();
-    }
-
-    @Override
-    public void subscribe() {
-
-    }
-
-
-    @Override
-    public void unSubscribe() {
-        mSubscriptions.clear();
-        if(activity!=null){
-            activity = null;
-        }
-    }
-
-
-    @Override
-    public void bindView(AppCompatActivity activity) {
-        this.activity = activity;
-    }
-
-    @Override
-    public void getData() {
-        List<VideoPlayerComment> comments = new ArrayList<>();
-        for(int a=0 ; a<20 ; a++){
-            VideoPlayerComment videoPlayerComment = new VideoPlayerComment(
-                    R.drawable.battery_10,"潇湘剑雨",5,"这个仿优酷视频Ui太好呢");
-            comments.add(videoPlayerComment);
-        }
-        mView.setAdapterView(comments);
-    }
-
-    /**
-     * 开始下载
-     */
-    @Override
-    public void startDownload() {
-
-    }
-}

+ 0 - 34
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/EmptyActivity.java

@@ -1,34 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.activity;
-
-import android.content.Intent;
-import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
-import android.view.View;
-import android.widget.Button;
-
-import org.yczbj.ycvideoplayer.R;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-public class EmptyActivity extends AppCompatActivity {
-
-
-    @BindView(R.id.jump_other)
-    Button jumpOther;
-
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        setContentView(R.layout.activity_empty);
-        ButterKnife.bind(this);
-        jumpOther.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                startActivity(new Intent(EmptyActivity.this, EmptyActivity.class));
-            }
-        });
-    }
-
-
-}

+ 0 - 363
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/VideoPlayerJzActivity.java

@@ -1,363 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.activity;
-
-import android.annotation.SuppressLint;
-import android.graphics.Color;
-import android.graphics.Rect;
-import android.os.Bundle;
-import android.os.Handler;
-import android.support.annotation.Nullable;
-import android.support.design.widget.FloatingActionButton;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.util.TypedValue;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.PopupWindow;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-
-import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
-
-import org.yczbj.ycrefreshviewlib.YCRefreshView;
-import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;
-import org.yczbj.ycrefreshviewlib.item.RecycleViewItemLine;
-import org.yczbj.ycrefreshviewlib.item.SpaceViewItemLine;
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayer.ui.home.contract.VideoPlayerJzContract;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerFavorite;
-import org.yczbj.ycvideoplayer.ui.home.presenter.VideoPlayerJzPresenter;
-import org.yczbj.ycvideoplayer.ui.home.view.adapter.NarrowImageAdapter;
-import org.yczbj.ycvideoplayer.ui.home.view.adapter.VideoPlayerMeAdapter;
-import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
-import org.yczbj.ycvideoplayerlib.player.VideoPlayer;
-import org.yczbj.ycvideoplayerlib.constant.ConstantKeys;
-import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
-import org.yczbj.ycvideoplayerlib.inter.listener.OnVideoBackListener;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import butterknife.BindView;
-import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2018/1/9
- * 描    述:视频播放器详情页面,仿优酷视频播放,使用饺子封装库
- * 修订历史:
- * ================================================
- */
-public class VideoPlayerJzActivity extends BaseActivity implements VideoPlayerJzContract.View {
-
-
-    @BindView(R.id.recyclerView)
-    YCRefreshView recyclerView;
-    @BindView(R.id.fab)
-    FloatingActionButton fab;
-    @BindView(R.id.video_player)
-    VideoPlayer videoPlayer;
-
-
-    private VideoPlayerJzContract.Presenter presenter = new VideoPlayerJzPresenter(this);
-    private VideoPlayerMeAdapter adapter;
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        VideoPlayerManager.instance().releaseVideoPlayer();
-    }
-
-
-    @Override
-    public void onBackPressed() {
-        if (VideoPlayerManager.instance().onBackPressed()) {
-            return;
-        }
-        super.onBackPressed();
-    }
-
-
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        presenter.bindView(this);
-        presenter.subscribe();
-    }
-
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        presenter.unSubscribe();
-    }
-
-
-    @Override
-    public int getContentView() {
-        return R.layout.activity_video_player_jz_detail;
-    }
-
-
-    @Override
-    public void initView() {
-        StateAppBar.setStatusBarLightMode(this, Color.WHITE);
-        initVideoPlayer();
-        initYCRefreshView();
-    }
-
-
-    @Override
-    public void initListener() {
-        adapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() {
-            @Override
-            public void onItemClick(int position) {
-
-            }
-        });
-    }
-
-
-    @Override
-    public void initData() {
-        recyclerView.showProgress();
-        presenter.getData();
-    }
-
-
-    private void initVideoPlayer() {
-        //设置播放类型
-        //videoPlayer.setPlayerType(VideoPlayer.TYPE_NATIVE);
-        videoPlayer.setPlayerType(ConstantKeys.IjkPlayerType.TYPE_IJK);
-        //网络视频地址
-        String videoUrl = ConstantVideo.VideoPlayerList[7];
-        //设置视频地址和请求头部
-        videoPlayer.setUp(videoUrl, null);
-        //是否从上一次的位置继续播放
-        videoPlayer.continueFromLastPosition(true);
-        //设置播放速度
-        videoPlayer.setSpeed(1.0f);
-        //创建视频控制器
-        VideoPlayerController controller = new VideoPlayerController(this);
-        controller.setTitle("高仿优酷视频播放页面");
-        controller.setLoadingType(ConstantKeys.Loading.LOADING_QQ);
-        controller.setTopVisibility(false);
-        controller.imageView().setBackgroundResource(R.color.blackText);
-        controller.setOnVideoBackListener(new OnVideoBackListener() {
-            @Override
-            public void onBackClick() {
-                onBackPressed();
-            }
-        });
-
-        //设置视频控制器
-        videoPlayer.setController(controller);
-    }
-
-
-    private void initYCRefreshView() {
-        recyclerView.setLayoutManager(new LinearLayoutManager(this));
-        final RecycleViewItemLine line = new RecycleViewItemLine(this, LinearLayout.HORIZONTAL,
-                SizeUtils.dp2px(1), Color.parseColor("#f5f5f7"));
-        recyclerView.addItemDecoration(line);
-        adapter = new VideoPlayerMeAdapter(this);
-        recyclerView.setAdapter(adapter);
-        addHeader();
-        recyclerView.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
-            @Override
-            public void onRefresh() {
-                SwipeRefreshLayout swipeToRefresh = recyclerView.getSwipeToRefresh();
-                if (swipeToRefresh.isRefreshing()) {
-                    recyclerView.setRefreshing(false);
-                }
-            }
-        });
-    }
-
-
-    /**
-     * 添加头部
-     */
-    private void addHeader() {
-        adapter.removeAllHeader();
-        initTopHeaderView();
-        initHeaderTitle();
-        initHorizontalView();
-        initVideoContentView();
-        initBottomHeaderView();
-    }
-
-
-    @Override
-    public void setAdapterView(List<VideoPlayerComment> comments) {
-        adapter.addAll(comments);
-        adapter.notifyDataSetChanged();
-        recyclerView.showRecycler();
-    }
-
-
-    private void initTopHeaderView() {
-        adapter.addHeader(new RecyclerArrayAdapter.ItemView() {
-            @Override
-            public View onCreateView(ViewGroup parent) {
-                return LayoutInflater.from(VideoPlayerJzActivity.this).inflate(
-                        R.layout.head_video_player_top, parent, false);
-            }
-
-
-            @Override
-            public void onBindView(View headerView) {
-                TextView tvPlayerTitle = (TextView) headerView.findViewById(R.id.tv_player_title);
-                TextView tvPlayerName = (TextView) headerView.findViewById(R.id.tv_player_name);
-                TextView tvPlayerDuty = (TextView) headerView.findViewById(R.id.tv_player_duty);
-                ImageView ivPlayerCollection = (ImageView) headerView.findViewById(R.id.iv_player_collection);
-                ImageView ivPlayerDownload = (ImageView) headerView.findViewById(R.id.iv_player_download);
-                ImageView ivPlayerShare = (ImageView) headerView.findViewById(R.id.iv_player_share);
-
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (v.getId()) {
-                            case R.id.iv_player_collection:
-                                ToastUtil.showToast(VideoPlayerJzActivity.this, "收藏视频");
-                                break;
-                            case R.id.iv_player_download:
-                                break;
-                            case R.id.iv_player_share:
-                                ToastUtil.showToast(VideoPlayerJzActivity.this, "分享视频");
-                                break;
-                            default:
-                                break;
-                        }
-                    }
-                };
-                ivPlayerCollection.setOnClickListener(listener);
-                ivPlayerDownload.setOnClickListener(listener);
-                ivPlayerShare.setOnClickListener(listener);
-            }
-        });
-    }
-
-    private void initHeaderTitle() {
-        adapter.addHeader(new RecyclerArrayAdapter.ItemView() {
-            @Override
-            public View onCreateView(ViewGroup parent) {
-                return LayoutInflater.from(VideoPlayerJzActivity.this).inflate
-                        (R.layout.head_video_player_title, parent, false);
-            }
-
-            @Override
-            public void onBindView(View headerView) {
-                TextView tvPlayerTitle = (TextView) headerView.findViewById(R.id.tv_player_title);
-                tvPlayerTitle.setText("热门推荐");
-            }
-        });
-    }
-
-
-    private void initHorizontalView() {
-        adapter.addHeader(new RecyclerArrayAdapter.ItemView() {
-            @Override
-            public View onCreateView(ViewGroup parent) {
-                RecyclerView recyclerView = new RecyclerView(parent.getContext()) {
-                    //为了不打扰横向RecyclerView的滑动操作,可以这样处理
-                    @SuppressLint("ClickableViewAccessibility")
-                    @Override
-                    public boolean onTouchEvent(MotionEvent event) {
-                        super.onTouchEvent(event);
-                        return true;
-                    }
-                };
-                RecyclerView.LayoutParams layoutParams = new RecyclerView.LayoutParams(
-                        ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
-                layoutParams.setMargins(SizeUtils.dp2px(10), SizeUtils.dp2px(5),
-                        SizeUtils.dp2px(10), SizeUtils.dp2px(5));
-                recyclerView.setLayoutParams(layoutParams);
-                final NarrowImageAdapter narrowAdapter;
-                recyclerView.setAdapter(narrowAdapter = new NarrowImageAdapter(parent.getContext()));
-                recyclerView.setLayoutManager(new LinearLayoutManager(parent.getContext(), LinearLayoutManager.HORIZONTAL, false));
-                recyclerView.addItemDecoration(new SpaceViewItemLine(SizeUtils.dp2px(8)));
-
-                narrowAdapter.setMore(R.layout.view_video_more_horizontal, new RecyclerArrayAdapter.OnLoadMoreListener() {
-                    @Override
-                    public void onLoadMore() {
-                        new Handler().postDelayed(new Runnable() {
-                            @Override
-                            public void run() {
-                                ToastUtil.showToast(VideoPlayerJzActivity.this, "没有更多呢!");
-                            }
-                        }, 1000);
-                    }
-                });
-                List<VideoPlayerFavorite> favoriteList = new ArrayList<>();
-                for (int a = 0; a < 10; a++) {
-                    VideoPlayerFavorite videoPlayerFavorite = new VideoPlayerFavorite(
-                            "这个是猜你喜欢的标题", R.drawable.bg_small_tree_min, "");
-                    favoriteList.add(videoPlayerFavorite);
-
-                }
-                narrowAdapter.addAll(favoriteList);
-                return recyclerView;
-            }
-
-            @Override
-            public void onBindView(View headerView) {
-                //这里的处理别忘了
-                ((ViewGroup) headerView).requestDisallowInterceptTouchEvent(true);
-            }
-        });
-    }
-
-
-    private void initVideoContentView() {
-        adapter.addHeader(new RecyclerArrayAdapter.ItemView() {
-            @Override
-            public View onCreateView(ViewGroup parent) {
-                return LayoutInflater.from(VideoPlayerJzActivity.this).inflate
-                        (R.layout.head_video_player_content, parent, false);
-            }
-
-            @Override
-            public void onBindView(View headerView) {
-                TextView tvPlayerCurriculum = (TextView) headerView.findViewById(R.id.tv_player_curriculum);
-            }
-        });
-    }
-
-
-    private void initBottomHeaderView() {
-        adapter.addFooter(new RecyclerArrayAdapter.ItemView() {
-            @Override
-            public View onCreateView(ViewGroup parent) {
-                TextView tv = new TextView(VideoPlayerJzActivity.this);
-                tv.setLayoutParams(new ViewGroup.LayoutParams(
-                        ViewGroup.LayoutParams.MATCH_PARENT, SizeUtils.dp2px(36)));
-                tv.setGravity(Gravity.CENTER);
-                tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
-                tv.setText("哥们,已经没有数据了……");
-                return tv;
-            }
-
-            @Override
-            public void onBindView(View headerView) {
-
-            }
-        });
-    }
-
-
-
-
-}

+ 0 - 53
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/BannerPagerAdapter.java

@@ -1,53 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.adapter;
-
-import android.content.Context;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.yc.cn.ycbannerlib.first.adapter.StaticPagerAdapter;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.util.ImageUtil;
-
-import java.util.List;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2016/11/12
- * 描    述:会议轮播图适配器
- * 修订历史:
- * ================================================
- */
-public class BannerPagerAdapter extends StaticPagerAdapter {
-
-    private Context ctx;
-    private List<String> list;
-
-    public BannerPagerAdapter(Context ctx, List<String> list) {
-        this.ctx = ctx;
-        this.list = list;
-    }
-
-    @Override
-    public View getView(ViewGroup container, final int position) {
-        ImageView imageView = new ImageView(ctx);
-        imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
-        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
-        //加载图片
-        if(list!=null){
-            ImageUtil.loadImgByPicasso(ctx,list.get(position), R.drawable.image_default,imageView);
-        }else {
-            ImageUtil.loadImgByPicasso(ctx, R.drawable.image_default,imageView);
-        }
-        return imageView;
-    }
-
-    @Override
-    public int getCount() {
-        return list==null ? 0 : list.size();
-    }
-
-}

+ 0 - 117
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/DialogListAdapter.java

@@ -1,117 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.adapter;
-
-import android.content.Context;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.ns.yc.ycprogresslib.CircleProgressbar;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.model.DialogListBean;
-
-import java.util.List;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-
-
-public class DialogListAdapter extends RecyclerView.Adapter<DialogListAdapter.ViewHolder> {
-
-
-    private LayoutInflater inflater;
-    private List<DialogListBean> mList;
-    private Context mContext;
-    private OnItemClickListener onItemClickListener;
-    private ViewHolder holder;
-
-    public DialogListAdapter(Context mContext, List<DialogListBean> mList) {
-        this.mList = mList;
-        this.mContext = mContext;
-        inflater = LayoutInflater.from(mContext);
-    }
-
-    @Override
-    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
-        holder = new ViewHolder(inflater.inflate(R.layout.item_dialog_list_view, parent, false));
-        return holder;
-    }
-
-    @Override
-    public void onBindViewHolder(ViewHolder holder, final int position) {
-        holder.tvTitle.setText(mList.get(position).getTitle());
-        holder.tvTime.setText("时长98:00:12");
-        holder.tvVideoSize.setText("100MB");
-        holder.ivDownload.setImageResource(R.drawable.icon_cache_download);
-
-        //设置类型
-        holder.circlePb.setProgressType(CircleProgressbar.ProgressType.COUNT);
-        //设置圆形的填充颜色
-        holder.circlePb.setInCircleColor(mContext.getResources().getColor(R.color.colorTransparent));
-        //设置外部轮廓的颜色
-        holder.circlePb.setOutLineColor(mContext.getResources().getColor(R.color.gray3));
-        //设置进度监听
-        holder.circlePb.setCountdownProgressListener(1, progressListener);
-        //设置外部轮廓的颜色
-        holder.circlePb.setOutLineWidth(1);
-        //设置进度条线的宽度
-        holder.circlePb.setProgressLineWidth(2);
-        //设置进度
-        holder.circlePb.setProgress(50);
-
-        holder.itemView.setOnClickListener(new View.OnClickListener() {
-            @Override
-            public void onClick(View view) {
-                if (onItemClickListener != null) {
-                    onItemClickListener.onItemClick(position);
-                }
-            }
-        });
-    }
-
-    @Override
-    public int getItemCount() {
-        return mList.size();
-    }
-
-    class ViewHolder extends RecyclerView.ViewHolder {
-
-        @BindView(R.id.tv_title)
-        TextView tvTitle;
-        @BindView(R.id.tv_time)
-        TextView tvTime;
-        @BindView(R.id.iv_download)
-        ImageView ivDownload;
-        @BindView(R.id.circle_pb)
-        CircleProgressbar circlePb;
-        @BindView(R.id.tv_video_size)
-        TextView tvVideoSize;
-
-
-        ViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-        }
-    }
-
-    private CircleProgressbar.OnCountdownProgressListener progressListener = new CircleProgressbar.OnCountdownProgressListener() {
-        @Override
-        public void onProgress(int what, int progress) {
-            if (what == 1) {
-                holder.circlePb.setText("0");
-            }
-        }
-    };
-
-
-    public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
-        this.onItemClickListener = onItemClickListener;
-    }
-
-    public interface OnItemClickListener {
-        void onItemClick(int id);
-    }
-}

+ 0 - 35
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/NarrowImageAdapter.java

@@ -1,35 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.adapter;
-
-import android.content.Context;
-import android.view.ViewGroup;
-
-import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;
-import org.yczbj.ycrefreshviewlib.viewHolder.BaseViewHolder;
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerFavorite;
-
-
-public class NarrowImageAdapter extends RecyclerArrayAdapter<VideoPlayerFavorite> {
-
-
-    public NarrowImageAdapter(Context context) {
-        super(context);
-    }
-
-    @Override
-    public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
-        return new NarrowImageViewHolder(parent);
-    }
-
-    private static class NarrowImageViewHolder extends BaseViewHolder<VideoPlayerFavorite> {
-
-        NarrowImageViewHolder(ViewGroup parent) {
-            super(parent, R.layout.view_video_player_favorite);
-        }
-
-        @Override
-        public void setData(VideoPlayerFavorite data) {
-
-        }
-    }
-}

+ 0 - 44
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/VideoPlayerMeAdapter.java

@@ -1,44 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.adapter;
-
-import android.app.Activity;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.TextView;
-
-
-import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;
-import org.yczbj.ycrefreshviewlib.viewHolder.BaseViewHolder;
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerComment;
-
-
-public class VideoPlayerMeAdapter extends RecyclerArrayAdapter<VideoPlayerComment> {
-
-    public VideoPlayerMeAdapter(Activity activity) {
-        super(activity);
-    }
-
-    @Override
-    public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
-        return new VideoPlayerViewHolder(parent);
-    }
-
-
-    private class VideoPlayerViewHolder extends BaseViewHolder<VideoPlayerComment> {
-
-        ImageView iv_movie_photo;
-        TextView tv_movie_title , tv_movie_directors ,tv_movie_casts,tv_movie_genres ,tv_movie_rating_rate;
-        View view_color;
-
-        VideoPlayerViewHolder(ViewGroup parent) {
-            super(parent, R.layout.item_video_player_com);
-        }
-
-        @Override
-        public void setData(VideoPlayerComment data) {
-            super.setData(data);
-
-        }
-    }
-}

+ 0 - 649
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/fragment/HomeFragment.java

@@ -1,649 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.home.view.fragment;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.support.v4.widget.SwipeRefreshLayout;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-
-import com.alibaba.android.vlayout.DelegateAdapter;
-import com.alibaba.android.vlayout.VirtualLayoutManager;
-import com.alibaba.android.vlayout.layout.GridLayoutHelper;
-import com.alibaba.android.vlayout.layout.LinearLayoutHelper;
-import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
-import com.yc.cn.ycbannerlib.first.BannerView;
-import com.yc.cn.ycbannerlib.first.util.SizeUtil;
-import com.yc.cn.ycbaseadapterlib.BaseViewHolder;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.Constant;
-import org.yczbj.ycvideoplayer.base.BaseConfig;
-import org.yczbj.ycvideoplayer.base.BaseDelegateAdapter;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseFragment;
-import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerFavorite;
-import org.yczbj.ycvideoplayer.ui.home.view.adapter.NarrowImageAdapter;
-import org.yczbj.ycvideoplayer.ui.person.TestFourWindowActivity;
-import org.yczbj.ycvideoplayer.ui.test.test2.TestMyActivity;
-import org.yczbj.ycvideoplayer.ui.home.view.activity.VideoPlayerJzActivity;
-import org.yczbj.ycvideoplayer.ui.person.VideoPlayerMeActivity;
-import org.yczbj.ycvideoplayer.ui.home.view.adapter.BannerPagerAdapter;
-import org.yczbj.ycvideoplayer.ui.main.view.activity.MainActivity;
-import org.yczbj.ycvideoplayer.util.LogUtils;
-import org.yczbj.ycvideoplayerlib.controller.VideoPlayerController;
-
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
-import butterknife.BindView;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/11/18
- * 描    述:home主页面
- * 修订历史:
- * ================================================
- */
-public class HomeFragment extends BaseFragment implements View.OnClickListener {
-
-
-    @BindView(R.id.recyclerView)
-    RecyclerView recyclerView;
-    @BindView(R.id.refresh)
-    SwipeRefreshLayout refresh;
-    @BindView(R.id.ll_search)
-    LinearLayout llSearch;
-    @BindView(R.id.ll_bind)
-    LinearLayout llBind;
-
-    private MainActivity activity;
-    private BannerView mBanner;
-    private VirtualLayoutManager layoutManager;
-    private int lastVisibleItem;
-    /**
-     * 存放各个模块的适配器
-     */
-    private List<DelegateAdapter.Adapter> mAdapters;
-    private DelegateAdapter delegateAdapter;
-    private VideoPlayerController controller;
-
-    @Override
-    public void onAttach(Context context) {
-        super.onAttach(context);
-        activity = (MainActivity) context;
-    }
-
-    @Override
-    public void onDetach() {
-        super.onDetach();
-        activity = null;
-    }
-
-
-    @Override
-    public void onPause() {
-        super.onPause();
-        if (mBanner != null) {
-            mBanner.pause();
-        }
-    }
-
-
-    @Override
-    public void onResume() {
-        super.onResume();
-        if (mBanner != null) {
-            mBanner.resume();
-        }
-        initOldUserBinding();
-    }
-
-    /**
-     * onHiddenChanged这个方法可以用来在切换Fragment的时候,进行一些即时的操作(如改变后要刷新、保存等)。
-     * @param hidden        是否隐藏
-     */
-    @Override
-    public void onHiddenChanged(boolean hidden) {
-        super.onHiddenChanged(hidden);
-        if(!hidden){
-            initOldUserBinding();
-        }
-    }
-
-
-    @Override
-    public int getContentView() {
-        return R.layout.fragment_home;
-    }
-
-    @Override
-    public void initView() {
-        initOldUserBinding();
-        initVLayout();
-        initRefreshView();
-    }
-
-
-    private void initOldUserBinding() {
-        boolean login = BaseConfig.INSTANCE.getIsLogin();
-        if (login) {
-            llBind.setVisibility(View.GONE);
-        } else {
-            llBind.setVisibility(View.VISIBLE);
-        }
-        llBind.setVisibility(View.VISIBLE);
-    }
-
-
-    private void initVLayout() {
-        mAdapters = new LinkedList<>();
-        //初始化
-        //创建VirtualLayoutManager对象
-        layoutManager = new VirtualLayoutManager(activity);
-        recyclerView.setLayoutManager(layoutManager);
-
-        //设置回收复用池大小,(如果一屏内相同类型的 View 个数比较多,需要设置一个合适的大小,防止来回滚动时重新创建 View)
-        RecyclerView.RecycledViewPool viewPool = new RecyclerView.RecycledViewPool();
-        recyclerView.setRecycledViewPool(viewPool);
-        viewPool.setMaxRecycledViews(0, 20);
-
-        //设置适配器
-        delegateAdapter = new DelegateAdapter(layoutManager, true);
-        recyclerView.setAdapter(delegateAdapter);
-
-        //自定义各种不同适配器
-        initAllTypeView();
-        //设置适配器
-        delegateAdapter.setAdapters(mAdapters);
-    }
-
-
-    private boolean isTopShow = true;
-    private void initRefreshView() {
-        refresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
-            @Override
-            public void onRefresh() {
-                if (refresh.isRefreshing()) {
-                    refresh.setRefreshing(false);
-                }
-            }
-        });
-        recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
-            @Override
-            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
-                super.onScrollStateChanged(recyclerView, newState);
-                if (refresh.isRefreshing()) {
-                    return;
-                }
-                if (newState == RecyclerView.SCROLL_STATE_IDLE) {
-                    if (lastVisibleItem == delegateAdapter.getItemCount() -1 ){
-                        //加载更多
-                        ToastUtil.showToast(activity, "没有更多数据!!!!!");
-                    }
-                }
-            }
-
-            @Override
-            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
-                super.onScrolled(recyclerView, dx, dy);
-                lastVisibleItem = layoutManager.findLastVisibleItemPosition();
-                boolean isTopScroll = recyclerView.canScrollVertically(-1);
-                //判断是否滑到了顶部
-                if(!isTopScroll){
-                    isTopShow = true;
-                    llBind.animate().translationY(0);
-                    return;
-                }
-                float scaleY = recyclerView.getScaleY();
-                LogUtils.e("onScrolled"+scaleY+"---"+dy);
-                if(scaleY - dy > 0 && isTopShow) {
-                    //下移隐藏
-                    isTopShow = false;
-                    llBind.animate().translationY(-llBind.getHeight());
-                } else if(scaleY - dy < 0 && !isTopShow){
-                    //上移出现
-                    isTopShow = true;
-                    llBind.animate().translationY(0);
-                }
-                /*if(scaleY-dy>0 && isTopShow){
-                    isTopShow = false;
-                    Animation translateAnimation = AnimationsUtils
-                            .getTranslateAnimation(0,
-                                    0, -(float) llBind.getHeight(), 0, 500);
-                    llBind.setAnimation(translateAnimation);
-                }else if(scaleY-dy<0 && !isTopShow){
-                    isTopShow = true;
-                    Animation translateAnimation = AnimationsUtils
-                            .getTranslateAnimation(0,
-                                    0, 0, (float) llBind.getHeight(), 1000);
-                    llBind.setAnimation(translateAnimation);
-                }*/
-            }
-        });
-    }
-
-
-    @Override
-    public void initListener() {
-        llSearch.setOnClickListener(this);
-        llBind.setOnClickListener(this);
-    }
-
-
-    @Override
-    public void initData() {
-
-    }
-
-    @Override
-    public void onClick(View v) {
-        switch (v.getId()){
-            case R.id.ll_search:
-
-                break;
-            case R.id.ll_bind:
-
-                break;
-            default:
-                break;
-        }
-    }
-
-    /**
-     * 添加不同类型数据布局
-     */
-    private void initAllTypeView() {
-        initBannerView();
-        initFiveButtonView();
-        initListFirstView();
-        initRecyclerView();
-        initFirstAdView();
-        initListSecondView();
-        initSecondAdView();
-        initListThirdView();
-        initListFourView();
-        initListFiveView();
-        initListSixView();
-    }
-
-
-
-    private void initBannerView() {
-        final ArrayList<String> arrayList = new ArrayList<>();
-        arrayList.add("http://bpic.wotucdn.com/11/66/23/55bOOOPIC3c_1024.jpg!/fw/780/quality/90/unsharp/true/compress/true/watermark/url/L2xvZ28ud2F0ZXIudjIucG5n/repeat/true");
-        arrayList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505470629546&di=194a9a92bfcb7754c5e4d19ff1515355&imgtype=0&src=http%3A%2F%2Fpics.jiancai.com%2Fimgextra%2Fimg01%2F656928666%2Fi1%2FT2_IffXdxaXXXXXXXX_%2521%2521656928666.jpg");
-        arrayList.add("http://bpic.wotucdn.com/11/66/23/55bOOOPIC3c_1024.jpg!/fw/780/quality/90/unsharp/true/compress/true/watermark/url/L2xvZ28ud2F0ZXIudjIucG5n/repeat/true");
-        arrayList.add("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1505470629546&di=194a9a92bfcb7754c5e4d19ff1515355&imgtype=0&src=http%3A%2F%2Fpics.jiancai.com%2Fimgextra%2Fimg01%2F656928666%2Fi1%2FT2_IffXdxaXXXXXXXX_%2521%2521656928666.jpg");
-        //banner
-        //banner
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(), R.layout.view_vlayout_banner, 1, Constant.viewType.typeBanner) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                // 绑定数据
-                mBanner = holder.getView(R.id.banner);
-                mBanner.setHintGravity(1);
-                mBanner.setAnimationDuration(1000);
-                mBanner.setPlayDelay(2000);
-                mBanner.setHintPadding(0, 0, 0, SizeUtil.dip2px(activity, 10));
-                mBanner.setAdapter(new BannerPagerAdapter(activity, arrayList));
-
-            }
-        };
-
-        mAdapters.add(adapter);
-    }
-
-
-    private void initFiveButtonView() {
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(), R.layout.view_vlayout_button, 1, Constant.viewType.typeView) {
-                @Override
-                public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                View.OnClickListener listener = new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (v.getId()) {
-                            case R.id.tv_home_first:
-                                startActivity(TestFourWindowActivity.class);
-                                break;
-                            case R.id.tv_home_second:
-                                startActivity(TestMyActivity.class);
-                                break;
-                            case R.id.tv_home_third:
-                                startActivity(VideoPlayerMeActivity.class);
-                                break;
-                            case R.id.tv_home_four:
-                                startActivity(VideoPlayerJzActivity.class);
-                                break;
-                            case R.id.tv_home_five:
-
-                                break;
-                            default:
-                                break;
-                        }
-                    }
-                };
-                holder.getView(R.id.tv_home_first).setOnClickListener(listener);
-                holder.getView(R.id.tv_home_second).setOnClickListener(listener);
-                holder.getView(R.id.tv_home_third).setOnClickListener(listener);
-                holder.getView(R.id.tv_home_four).setOnClickListener(listener);
-                holder.getView(R.id.tv_home_five).setOnClickListener(listener);
-            }
-        };
-        mAdapters.add(adapter);
-    }
-
-
-    private void initListFirstView() {
-        initTitleView(1);
-        GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(2);
-        gridLayoutHelper.setPadding(0, 16, 0, 16);
-        // 控制子元素之间的垂直间距
-        gridLayoutHelper.setVGap(16);
-        // 控制子元素之间的水平间距
-        gridLayoutHelper.setHGap(0);
-        gridLayoutHelper.setBgColor(Color.WHITE);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, gridLayoutHelper, R.layout.view_vlayout_grid, 4, Constant.viewType.typeGv) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                final ImageView ivImage = holder.getView(R.id.iv_image);
-                ivImage.setBackgroundResource(R.drawable.bg_small_tree_min);
-                //String image = ConstantImage.homePageConcentration[position];
-                //ImageUtil.loadImgByPicasso(activity,ConstantImage.homePageConcentration[position],R.drawable.image_default,ivImage);
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(1);
-    }
-
-    private void initRecyclerView() {
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(),
-                R.layout.view_vlayout_recycler, 1, Constant.viewType.typeRecycler) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                final RecyclerView recycler = holder.getView(R.id.recyclerView);
-                recycler.setLayoutManager(new LinearLayoutManager(activity,
-                        LinearLayoutManager.HORIZONTAL,false));
-                NarrowImageAdapter narrowImageAdapter = new NarrowImageAdapter(activity);
-                recycler.setAdapter(narrowImageAdapter);
-                List<VideoPlayerFavorite> favoriteList = new ArrayList<>();
-                for (int a = 0; a < 30; a++) {
-                    VideoPlayerFavorite videoPlayerFavorite = new VideoPlayerFavorite(
-                            "这个是猜你喜欢的标题", R.drawable.bg_small_tree_min, "");
-                    favoriteList.add(videoPlayerFavorite);
-                }
-                narrowImageAdapter.addAll(favoriteList);
-            }
-        };
-
-        LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
-        BaseDelegateAdapter adapter1 = new BaseDelegateAdapter(activity, new LinearLayoutHelper(),
-                R.layout.view_video_player_favorite, 30, Constant.viewType.typeRecycler) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-            }
-        };
-        mAdapters.add(adapter);
-    }
-
-
-    private void initFirstAdView() {
-        BaseDelegateAdapter adAdapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(), R.layout.view_vlayout_ad, 1, Constant.viewType.typeAd) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-            }
-        };
-        mAdapters.add(adAdapter);
-    }
-
-
-    private void initListSecondView() {
-        initTitleView(2);
-        LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
-        linearLayoutHelper.setAspectRatio(4.0f);
-        linearLayoutHelper.setDividerHeight(5);
-        linearLayoutHelper.setMargin(0, 0, 0, 0);
-        linearLayoutHelper.setPadding(0, 0, 0, 10);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, linearLayoutHelper, R.layout.view_vlayout_news, 3, Constant.viewType.typeList2) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(2);
-    }
-
-
-    private void initSecondAdView() {
-        BaseDelegateAdapter adAdapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(), R.layout.view_vlayout_ad, 1, Constant.viewType.typeAd2) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                holder.getView(R.id.iv_image_ad).setBackgroundResource(R.drawable.bg_small_leaves_min);
-
-            }
-        };
-        mAdapters.add(adAdapter);
-    }
-
-
-    private void initListThirdView() {
-        initTitleView(3);
-        GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(2);
-        gridLayoutHelper.setPadding(0, 16, 0, 16);
-        // 控制子元素之间的垂直间距
-        gridLayoutHelper.setVGap(16);
-        // 控制子元素之间的水平间距
-        gridLayoutHelper.setHGap(0);
-        gridLayoutHelper.setBgColor(Color.WHITE);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity,
-                gridLayoutHelper, R.layout.view_vlayout_grid, 2, Constant.viewType.typeGv3) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                ImageView ivImage = holder.getView(R.id.iv_image);
-                ivImage.setImageResource(R.drawable.bg_small_autumn_tree_min);
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(3);
-    }
-
-
-    private void initListFourView() {
-        initTitleView(4);
-        LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
-        linearLayoutHelper.setAspectRatio(4.0f);
-        linearLayoutHelper.setDividerHeight(5);
-        linearLayoutHelper.setMargin(0, 0, 0, 0);
-        linearLayoutHelper.setPadding(0, 0, 0, 10);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, linearLayoutHelper, R.layout.view_vlayout_news, 3, Constant.viewType.typeList4) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(4);
-    }
-
-
-    private void initListFiveView() {
-        initTitleView(5);
-        GridLayoutHelper gridLayoutHelper = new GridLayoutHelper(3);
-        gridLayoutHelper.setPadding(0, 16, 0, 16);
-        // 控制子元素之间的垂直间距
-        gridLayoutHelper.setVGap(16);
-        // 控制子元素之间的水平间距
-        gridLayoutHelper.setHGap(0);
-        gridLayoutHelper.setBgColor(Color.WHITE);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, gridLayoutHelper, R.layout.view_vlayout_grid, 6, Constant.viewType.typeGvBottom) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                ImageView ivImage = holder.getView(R.id.iv_image);
-                ivImage.setImageResource(R.drawable.bg_small_leaves_min);
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(4);
-    }
-
-
-    private void initListSixView() {
-        initTitleView(6);
-        LinearLayoutHelper linearLayoutHelper = new LinearLayoutHelper();
-        linearLayoutHelper.setAspectRatio(4.0f);
-        linearLayoutHelper.setDividerHeight(5);
-        linearLayoutHelper.setMargin(0, 0, 0, 0);
-        linearLayoutHelper.setPadding(0, 0, 0, 10);
-        BaseDelegateAdapter adapter = new BaseDelegateAdapter(activity, linearLayoutHelper, R.layout.view_vlayout_news, 3, Constant.viewType.typeList5) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-
-            }
-        };
-        mAdapters.add(adapter);
-        initMoreView(6);
-    }
-
-
-    private void initTitleView(final int type) {
-        BaseDelegateAdapter titleAdapter = new BaseDelegateAdapter(activity, new LinearLayoutHelper(), R.layout.view_vlayout_title, 1, Constant.viewType.typeTitle) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                switch (type) {
-                    case 1:
-                        holder.setText(R.id.tv_title, "为你精选");
-                        break;
-                    case 2:
-                        holder.setText(R.id.tv_title, "推广专区");
-                        break;
-                    case 3:
-                        holder.setText(R.id.tv_title, "行业动态");
-                        break;
-                    case 4:
-                        holder.setText(R.id.tv_title, "趋势分析");
-                        break;
-                    case 5:
-                        holder.setText(R.id.tv_title, "大牛分享");
-                        break;
-                    case 6:
-                        holder.setText(R.id.tv_title, "潇湘剑雨");
-                        break;
-                    default:
-                        holder.setText(R.id.tv_title, "这个是标题");
-                        break;
-                }
-                holder.getView(R.id.tv_change).setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (type) {
-                            case 1:
-                                ToastUtil.showToast(activity, "刷新为你精选数据");
-                                break;
-                            case 2:
-                                ToastUtil.showToast(activity, "刷新推广专区数据");
-                                break;
-                            case 3:
-                                ToastUtil.showToast(activity, "刷新行业动态数据");
-                                break;
-                            case 4:
-                                ToastUtil.showToast(activity, "刷新趋势分析数据");
-                                break;
-                            case 5:
-                                ToastUtil.showToast(activity, "刷新大牛分享数据");
-                                break;
-                            case 6:
-                                ToastUtil.showToast(activity, "刷新潇湘剑雨的数据");
-                                break;
-                            default:
-                                ToastUtil.showToast(activity, "刷新XXXX数据");
-                                break;
-                        }
-                    }
-                });
-            }
-        };
-        mAdapters.add(titleAdapter);
-    }
-
-
-    private void initMoreView(final int type) {
-        BaseDelegateAdapter moreAdapter = new BaseDelegateAdapter(activity,
-                new LinearLayoutHelper(), R.layout.view_vlayout_more, 1,
-                Constant.viewType.typeMore) {
-            @Override
-            public void onBindViewHolder(BaseViewHolder holder, int position) {
-                super.onBindViewHolder(holder, position);
-                switch (type) {
-                    case 1:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                    case 2:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                    case 3:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                    case 4:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                    case 5:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                    case 6:
-                        holder.setText(R.id.tv_more, "没有更多数据");
-                        break;
-                    default:
-                        holder.setText(R.id.tv_more, "查看更多");
-                        break;
-                }
-                holder.getView(R.id.tv_more).setOnClickListener(new View.OnClickListener() {
-                    @Override
-                    public void onClick(View v) {
-                        switch (type) {
-                            case 1:
-                                ToastUtil.showToast(activity, "跳转为你精选数据");
-                                break;
-                            case 2:
-                                ToastUtil.showToast(activity, "跳转推广专区数据");
-                                break;
-                            case 3:
-                                ToastUtil.showToast(activity, "跳转行业动态数据");
-                                break;
-                            case 4:
-                                ToastUtil.showToast(activity, "跳转趋势分析数据");
-                                break;
-                            case 5:
-                                ToastUtil.showToast(activity, "跳转大牛分享数据");
-                                break;
-                            default:
-                                ToastUtil.showToast(activity, "跳转XXXX数据");
-                                break;
-                        }
-                    }
-                });
-            }
-        };
-        mAdapters.add(moreAdapter);
-    }
-
-
-}

+ 0 - 37
app/src/main/java/org/yczbj/ycvideoplayer/ui/main/contract/MainContract.java

@@ -1,37 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.main.contract;
-
-
-import android.app.Activity;
-
-import com.flyco.tablayout.listener.CustomTabEntity;
-
-import org.yczbj.ycvideoplayer.base.mvp1.BasePresenter;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseView;
-import org.yczbj.ycvideoplayer.ui.main.view.activity.MainActivity;
-
-import java.util.ArrayList;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Main主页面
- * 修订历史:
- * ================================================
- */
-public interface MainContract {
-
-    //View(activity/fragment)继承,需要实现的方法
-    interface View extends BaseView {
-        Activity getActivity();
-    }
-
-    //Presenter控制器
-    interface Presenter extends BasePresenter {
-        ArrayList<CustomTabEntity> getTabEntity();
-        void bindView(MainActivity activity);
-    }
-
-
-}

+ 0 - 78
app/src/main/java/org/yczbj/ycvideoplayer/ui/main/presenter/MainPresenter.java

@@ -1,78 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.main.presenter;
-
-import android.app.Activity;
-import android.content.res.TypedArray;
-
-import com.flyco.tablayout.listener.CustomTabEntity;
-
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.model.bean.TabEntity;
-import org.yczbj.ycvideoplayer.ui.main.contract.MainContract;
-import org.yczbj.ycvideoplayer.ui.main.view.activity.MainActivity;
-
-import java.util.ArrayList;
-
-import io.reactivex.disposables.CompositeDisposable;
-
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/3/18
- * 描    述:Main主页面
- * 修订历史:
- * ================================================
- */
-public class MainPresenter implements MainContract.Presenter {
-
-    private MainContract.View mView;
-    private CompositeDisposable mSubscriptions;
-    private Activity activity;
-
-    public MainPresenter(MainContract.View androidView) {
-        this.mView = androidView;
-        mSubscriptions = new CompositeDisposable();
-    }
-
-    @Override
-    public void subscribe() {
-
-    }
-
-
-    @Override
-    public void unSubscribe() {
-        mSubscriptions.clear();
-        if(activity!=null){
-            activity = null;
-        }
-    }
-
-    @Override
-    public void bindView(MainActivity activity) {
-        this.activity = activity;
-    }
-
-    @Override
-    public ArrayList<CustomTabEntity> getTabEntity() {
-        if(activity==null){
-            activity = mView.getActivity();
-        }
-        ArrayList<CustomTabEntity> mTabEntities = new ArrayList<>();
-        TypedArray mIconUnSelectIds = activity.getResources().obtainTypedArray(R.array.main_tab_un_select);
-        TypedArray mIconSelectIds = activity.getResources().obtainTypedArray(R.array.main_tab_select);
-        String[] mainTitles = activity.getResources().getStringArray(R.array.main_title);
-        for (int i = 0; i < mainTitles.length; i++) {
-            int unSelectId = mIconUnSelectIds.getResourceId(i, R.drawable.tab_home_unselect);
-            int selectId = mIconSelectIds.getResourceId(i, R.drawable.tab_home_select);
-            mTabEntities.add(new TabEntity(mainTitles[i],selectId , unSelectId));
-        }
-        mIconUnSelectIds.recycle();
-        mIconSelectIds.recycle();
-        return mTabEntities;
-    }
-
-
-}

+ 0 - 305
app/src/main/java/org/yczbj/ycvideoplayer/ui/main/view/activity/MainActivity.java

@@ -1,305 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.main.view.activity;
-
-import android.app.Activity;
-import android.graphics.Color;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentTransaction;
-import android.view.KeyEvent;
-import android.widget.FrameLayout;
-
-import com.blankj.utilcode.util.ToastUtils;
-import com.flyco.tablayout.CommonTabLayout;
-import com.flyco.tablayout.listener.CustomTabEntity;
-import com.flyco.tablayout.listener.OnTabSelectListener;
-import com.ns.yc.ycutilslib.activityManager.AppManager;
-import com.ns.yc.ycutilslib.managerLeak.InputMethodManagerLeakUtils;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.api.constant.Constant;
-import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
-import org.yczbj.ycvideoplayer.base.BaseFragmentFactory;
-import org.yczbj.ycvideoplayer.ui.news.view.fragment.NewsFragment;
-import org.yczbj.ycvideoplayer.ui.video.view.fragment.VideoFragment;
-import org.yczbj.ycvideoplayer.ui.home.view.fragment.HomeFragment;
-import org.yczbj.ycvideoplayer.ui.main.contract.MainContract;
-import org.yczbj.ycvideoplayer.ui.main.presenter.MainPresenter;
-import org.yczbj.ycvideoplayer.ui.person.MeFragment;
-import org.yczbj.ycvideoplayerlib.manager.VideoPlayerManager;
-
-import java.util.ArrayList;
-
-import butterknife.BindView;
-import cn.ycbjie.ycstatusbarlib.bar.StateAppBar;
-
-/**
- * ================================================
- * 作    者:杨充
- * 版    本:1.0
- * 创建日期:2017/11/18
- * 描    述:Main主页面
- * 修订历史:
- * ================================================
- */
-public class MainActivity extends BaseActivity implements MainContract.View {
-
-
-    @BindView(R.id.ctl_table)
-    CommonTabLayout ctlTable;
-    @BindView(R.id.fl_main)
-    FrameLayout flMain;
-
-    private static final String POSITION = "position";
-    private static final String SELECT_ITEM = "selectItem";
-    private static final int FRAGMENT_HOME = 0;
-    private static final int FRAGMENT_VIDEO = 2;
-    private static final int FRAGMENT_ME = 3;
-    private static final int FRAGMENT_NEWS = 4;
-    private int position;
-
-    private MainContract.Presenter presenter = new MainPresenter(this);
-    private long exitTime;
-    private long firstClickTime = 0;
-    private Bundle savedInstanceState;
-    private HomeFragment homeFragment;
-    private VideoFragment videoFragment;
-    private MeFragment meFragment;
-    private NewsFragment newsFragment;
-
-
-    @Override
-    protected void onCreate(@Nullable Bundle savedInstanceState) {
-        super.onCreate(savedInstanceState);
-        this.savedInstanceState = savedInstanceState;
-        presenter.bindView(this);
-        presenter.subscribe();
-    }
-
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        InputMethodManagerLeakUtils.fixInputMethodManagerLeak(this);
-        presenter.unSubscribe();
-    }
-
-    @Override
-    protected void onStop() {
-        super.onStop();
-        VideoPlayerManager.instance().releaseVideoPlayer();
-    }
-
-    @Override
-    public void onBackPressed() {
-        if (VideoPlayerManager.instance().onBackPressed()) {
-            return;
-        }
-        super.onBackPressed();
-    }
-
-    @Override
-    protected void onSaveInstanceState(Bundle outState) {
-        // recreate 时记录当前位置 (在 Manifest 已禁止 Activity 旋转,所以旋转屏幕并不会执行以下代码)
-        // 程序意外崩溃时保存状态信息
-        super.onSaveInstanceState(outState);
-        outState.putInt(POSITION, position);
-        outState.putInt(SELECT_ITEM, ctlTable.getCurrentTab());
-    }
-
-
-    @Override
-    public int getContentView() {
-        return R.layout.activity_main;
-    }
-
-
-    @Override
-    public void initView() {
-        StateAppBar.setStatusBarLightMode(this, Color.WHITE);
-        initTabLayout();
-        initFragment();
-    }
-
-
-    @Override
-    public void initListener() {
-
-    }
-
-
-    @Override
-    public void initData() {
-
-    }
-
-
-    /**
-     * 初始化底部导航栏数据
-     */
-    private void initTabLayout() {
-        ArrayList<CustomTabEntity> mTabEntities = presenter.getTabEntity();
-        ctlTable.setTabData(mTabEntities);
-        ctlTable.setOnTabSelectListener(new OnTabSelectListener() {
-            @Override
-            public void onTabSelect(int position) {
-                switch (position) {
-                    case 0:
-                        showFragment(FRAGMENT_HOME);
-                        break;
-                    case 1:
-                        showFragment(FRAGMENT_NEWS);
-                        doubleClick(FRAGMENT_NEWS);
-                        break;
-                    case 2:
-                        showFragment(FRAGMENT_VIDEO);
-                        doubleClick(FRAGMENT_VIDEO);
-                        break;
-                    case 3:
-                        showFragment(FRAGMENT_ME);
-                        break;
-                    default:
-                        break;
-                }
-            }
-
-            @Override
-            public void onTabReselect(int position) {}
-        });
-    }
-
-
-    /**
-     * 初始化ViewPager数据
-     */
-    private void initFragment() {
-        if(savedInstanceState!=null){
-            homeFragment = BaseFragmentFactory.getInstance().getHomeFragment();
-            newsFragment = BaseFragmentFactory.getInstance().getNewsFragment();
-            videoFragment = BaseFragmentFactory.getInstance().getVideoFragment();
-            meFragment = BaseFragmentFactory.getInstance().getMeFragment();
-            int index = savedInstanceState.getInt(POSITION);
-            showFragment(index);
-            ctlTable.setCurrentTab(savedInstanceState.getInt(SELECT_ITEM));
-        }else {
-            showFragment(FRAGMENT_HOME);
-        }
-    }
-
-
-    private void showFragment(int index) {
-        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
-        hideFragment(ft);
-        position = index;
-        switch (index) {
-            case FRAGMENT_HOME:
-                /**
-                 * 如果Fragment为空,就新建一个实例
-                 * 如果不为空,就将它从栈中显示出来
-                 */
-                if (homeFragment == null) {
-                    homeFragment = BaseFragmentFactory.getInstance().getHomeFragment();
-                    ft.add(R.id.fl_main, homeFragment, HomeFragment.class.getName());
-                } else {
-                    ft.show(homeFragment);
-                }
-                break;
-            case FRAGMENT_VIDEO:
-                if (videoFragment == null) {
-                    videoFragment = BaseFragmentFactory.getInstance().getVideoFragment();
-                    ft.add(R.id.fl_main, videoFragment, VideoFragment.class.getName());
-                } else {
-                    ft.show(videoFragment);
-                }
-                break;
-            case FRAGMENT_ME:
-                if (meFragment == null) {
-                    meFragment = BaseFragmentFactory.getInstance().getMeFragment();
-                    ft.add(R.id.fl_main, meFragment, MeFragment.class.getName());
-                } else {
-                    ft.show(meFragment);
-                }
-                break;
-            case FRAGMENT_NEWS:
-                if (newsFragment == null) {
-                    newsFragment = BaseFragmentFactory.getInstance().getNewsFragment();
-                    ft.add(R.id.fl_main, newsFragment, MeFragment.class.getName());
-                } else {
-                    ft.show(newsFragment);
-                }
-                break;
-            default:
-                break;
-        }
-        ft.commit();
-    }
-
-
-    private void hideFragment(FragmentTransaction ft) {
-        // 如果不为空,就先隐藏起来
-        if (homeFragment != null) {
-            setHide(ft,homeFragment);
-        }
-        if (newsFragment != null) {
-            setHide(ft,newsFragment);
-        }
-        if (videoFragment != null) {
-            setHide(ft,videoFragment);
-        }
-        if (meFragment != null) {
-            setHide(ft,meFragment);
-        }
-    }
-
-    private void setHide(FragmentTransaction ft, Fragment fragment) {
-        if(fragment.isAdded()){
-            ft.hide(fragment);
-        }
-    }
-
-
-    private void doubleClick(int index) {
-        long secondClickTime = System.currentTimeMillis();
-        if ((secondClickTime - firstClickTime < Constant.CLICK_TIME)) {
-            switch (index) {
-                case FRAGMENT_NEWS:
-                    newsFragment.onDoubleClick();
-                    break;
-                case FRAGMENT_VIDEO:
-                    videoFragment.onDoubleClick();
-                    break;
-                default:
-                    break;
-            }
-        } else {
-            firstClickTime = secondClickTime;
-        }
-    }
-
-
-    @Override
-    public Activity getActivity() {
-        return this;
-    }
-
-
-    /**
-     * 监听back键处理DrawerLayout和SearchView
-     */
-    @Override
-    public boolean onKeyDown(int keyCode, KeyEvent event) {
-        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
-            if ((System.currentTimeMillis() - exitTime) > 2000) {
-                ToastUtils.showShort("再按一次退出");
-                exitTime = System.currentTimeMillis();
-            } else {
-                finish();
-                AppManager.getAppManager().appExit(false);
-            }
-            return true;
-        }
-        return super.onKeyDown(keyCode, event);
-    }
-
-
-}

+ 0 - 48
app/src/main/java/org/yczbj/ycvideoplayer/ui/news/contract/INewsArticle.java

@@ -1,48 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.news.contract;
-
-
-
-import org.yczbj.ycvideoplayer.base.mvp2.IBaseListView;
-import org.yczbj.ycvideoplayer.base.mvp2.IBasePresenter;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleDataBean;
-
-import java.util.List;
-
-public interface INewsArticle {
-
-    interface View extends IBaseListView<Presenter> {
-
-        /**
-         * 请求数据
-         */
-        void onLoadData();
-
-        /**
-         * 刷新
-         */
-        void onRefresh();
-    }
-
-    interface Presenter extends IBasePresenter {
-
-        /**
-         * 请求数据
-         */
-        void doLoadData(String... category);
-
-        /**
-         * 再起请求数据
-         */
-        void doLoadMoreData();
-
-        /**
-         * 设置适配器
-         */
-        void doSetAdapter(List<MultiNewsArticleDataBean> dataBeen);
-
-        /**
-         * 加载完毕
-         */
-        void doShowNoMore();
-    }
-}

+ 0 - 448
app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/bean/NewsCommentBean.java

@@ -1,448 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.news.model.bean;
-
-import java.util.List;
-
-public class NewsCommentBean {
-
-    /**
-     * detail_no_comment : 0
-     * total_number : 59
-     * ban_comment : false
-     * has_more : true
-     * go_topic_detail : 1
-     * stick_total_number : 0
-     * tab_info : {"tabs":["热度","时间"],"current_tab_index":0}
-     * fold_comment_count : 0
-     * show_add_forum : 1
-     * stable : true
-     * stick_has_more : false
-     * message : success
-     */
-
-    private int detail_no_comment;
-    private int total_number;
-    private boolean ban_comment;
-    private boolean has_more;
-    private int go_topic_detail;
-    private int stick_total_number;
-    private TabInfoBean tab_info;
-    private int fold_comment_count;
-    private int show_add_forum;
-    private boolean stable;
-    private boolean stick_has_more;
-    private String message;
-    private List<DataBean> data;
-
-    public int getDetail_no_comment() {
-        return detail_no_comment;
-    }
-
-    public void setDetail_no_comment(int detail_no_comment) {
-        this.detail_no_comment = detail_no_comment;
-    }
-
-    public int getTotal_number() {
-        return total_number;
-    }
-
-    public void setTotal_number(int total_number) {
-        this.total_number = total_number;
-    }
-
-    public boolean isBan_comment() {
-        return ban_comment;
-    }
-
-    public void setBan_comment(boolean ban_comment) {
-        this.ban_comment = ban_comment;
-    }
-
-    public boolean isHas_more() {
-        return has_more;
-    }
-
-    public void setHas_more(boolean has_more) {
-        this.has_more = has_more;
-    }
-
-    public int getGo_topic_detail() {
-        return go_topic_detail;
-    }
-
-    public void setGo_topic_detail(int go_topic_detail) {
-        this.go_topic_detail = go_topic_detail;
-    }
-
-    public int getStick_total_number() {
-        return stick_total_number;
-    }
-
-    public void setStick_total_number(int stick_total_number) {
-        this.stick_total_number = stick_total_number;
-    }
-
-    public TabInfoBean getTab_info() {
-        return tab_info;
-    }
-
-    public void setTab_info(TabInfoBean tab_info) {
-        this.tab_info = tab_info;
-    }
-
-    public int getFold_comment_count() {
-        return fold_comment_count;
-    }
-
-    public void setFold_comment_count(int fold_comment_count) {
-        this.fold_comment_count = fold_comment_count;
-    }
-
-    public int getShow_add_forum() {
-        return show_add_forum;
-    }
-
-    public void setShow_add_forum(int show_add_forum) {
-        this.show_add_forum = show_add_forum;
-    }
-
-    public boolean isStable() {
-        return stable;
-    }
-
-    public void setStable(boolean stable) {
-        this.stable = stable;
-    }
-
-    public boolean isStick_has_more() {
-        return stick_has_more;
-    }
-
-    public void setStick_has_more(boolean stick_has_more) {
-        this.stick_has_more = stick_has_more;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-
-    public void setMessage(String message) {
-        this.message = message;
-    }
-
-    public List<DataBean> getData() {
-        return data;
-    }
-
-    public void setData(List<DataBean> data) {
-        this.data = data;
-    }
-
-    public static class TabInfoBean {
-        /**
-         * tabs : ["热度","时间"]
-         * current_tab_index : 0
-         */
-
-        private int current_tab_index;
-        private List<String> tabs;
-
-        public int getCurrent_tab_index() {
-            return current_tab_index;
-        }
-
-        public void setCurrent_tab_index(int current_tab_index) {
-            this.current_tab_index = current_tab_index;
-        }
-
-        public List<String> getTabs() {
-            return tabs;
-        }
-
-        public void setTabs(List<String> tabs) {
-            this.tabs = tabs;
-        }
-    }
-
-    public static class DataBean {
-        /**
-         * comment : {"is_followed":0,"text":"我们的未来有希望了,","reply_count":0,"is_following":0,"reply_list":[],"user_verified":false,"is_blocking":0,"user_id":50022511998,"bury_count":0,"author_badge":[],"id":50029624449,"verified_reason":"","platform":"feifei","score":0,"user_name":"WolfRoad124180199","user_profile_image_url":"http://p1.pstatp.com/thumb/729001d88c6944f970b","user_bury":0,"user_digg":0,"is_blocked":0,"user_relation":0,"user_auth_info":"","digg_count":33,"create_time":1470145059}
-         * cell_type : 1
-         */
-
-        private CommentBean comment;
-        private int cell_type;
-
-        public CommentBean getComment() {
-            return comment;
-        }
-
-        public void setComment(CommentBean comment) {
-            this.comment = comment;
-        }
-
-        public int getCell_type() {
-            return cell_type;
-        }
-
-        public void setCell_type(int cell_type) {
-            this.cell_type = cell_type;
-        }
-
-        public static class CommentBean {
-            /**
-             * is_followed : 0
-             * text : 我们的未来有希望了,
-             * reply_count : 0
-             * is_following : 0
-             * reply_list : []
-             * user_verified : false
-             * is_blocking : 0
-             * user_id : 50022511998
-             * bury_count : 0
-             * author_badge : []
-             * id : 50029624449
-             * verified_reason :
-             * platform : feifei
-             * score : 0
-             * user_name : WolfRoad124180199
-             * user_profile_image_url : http://p1.pstatp.com/thumb/729001d88c6944f970b
-             * user_bury : 0
-             * user_digg : 0
-             * is_blocked : 0
-             * user_relation : 0
-             * user_auth_info :
-             * digg_count : 33
-             * create_time : 1470145059
-             */
-
-            private int is_followed;
-            private String text;
-            private int reply_count;
-            private int is_following;
-            private boolean user_verified;
-            private int is_blocking;
-            private long user_id;
-            private int bury_count;
-            private long id;
-            private String verified_reason;
-            private String platform;
-            //            private long score;
-            private String user_name;
-            private String user_profile_image_url;
-            private int user_bury;
-            private int user_digg;
-            private int is_blocked;
-            private int user_relation;
-            private String user_auth_info;
-            private int digg_count;
-            private int create_time;
-            private List<?> reply_list;
-            private List<?> author_badge;
-
-            @Override
-            public boolean equals(Object o) {
-                if (this == o)
-                    return true;
-                if (o == null || getClass() != o.getClass())
-                    return false;
-
-                CommentBean that = (CommentBean) o;
-
-                if (create_time != that.create_time)
-                    return false;
-                return text.equals(that.text);
-            }
-
-            @Override
-            public int hashCode() {
-                int result = text.hashCode();
-                result = 31 * result + create_time;
-                return result;
-            }
-
-            public int getIs_followed() {
-                return is_followed;
-            }
-
-            public void setIs_followed(int is_followed) {
-                this.is_followed = is_followed;
-            }
-
-            public String getText() {
-                return text;
-            }
-
-            public void setText(String text) {
-                this.text = text;
-            }
-
-            public int getReply_count() {
-                return reply_count;
-            }
-
-            public void setReply_count(int reply_count) {
-                this.reply_count = reply_count;
-            }
-
-            public int getIs_following() {
-                return is_following;
-            }
-
-            public void setIs_following(int is_following) {
-                this.is_following = is_following;
-            }
-
-            public boolean isUser_verified() {
-                return user_verified;
-            }
-
-            public void setUser_verified(boolean user_verified) {
-                this.user_verified = user_verified;
-            }
-
-            public int getIs_blocking() {
-                return is_blocking;
-            }
-
-            public void setIs_blocking(int is_blocking) {
-                this.is_blocking = is_blocking;
-            }
-
-            public long getUser_id() {
-                return user_id;
-            }
-
-            public void setUser_id(long user_id) {
-                this.user_id = user_id;
-            }
-
-            public int getBury_count() {
-                return bury_count;
-            }
-
-            public void setBury_count(int bury_count) {
-                this.bury_count = bury_count;
-            }
-
-            public long getId() {
-                return id;
-            }
-
-            public void setId(long id) {
-                this.id = id;
-            }
-
-            public String getVerified_reason() {
-                return verified_reason;
-            }
-
-            public void setVerified_reason(String verified_reason) {
-                this.verified_reason = verified_reason;
-            }
-
-            public String getPlatform() {
-                return platform;
-            }
-
-            public void setPlatform(String platform) {
-                this.platform = platform;
-            }
-
-//            public long getScore() {
-//                return score;
-//            }
-
-//            public void setScore(int score) {
-//                this.score = score;
-//            }
-
-            public String getUser_name() {
-                return user_name;
-            }
-
-            public void setUser_name(String user_name) {
-                this.user_name = user_name;
-            }
-
-            public String getUser_profile_image_url() {
-                return user_profile_image_url;
-            }
-
-            public void setUser_profile_image_url(String user_profile_image_url) {
-                this.user_profile_image_url = user_profile_image_url;
-            }
-
-            public int getUser_bury() {
-                return user_bury;
-            }
-
-            public void setUser_bury(int user_bury) {
-                this.user_bury = user_bury;
-            }
-
-            public int getUser_digg() {
-                return user_digg;
-            }
-
-            public void setUser_digg(int user_digg) {
-                this.user_digg = user_digg;
-            }
-
-            public int getIs_blocked() {
-                return is_blocked;
-            }
-
-            public void setIs_blocked(int is_blocked) {
-                this.is_blocked = is_blocked;
-            }
-
-            public int getUser_relation() {
-                return user_relation;
-            }
-
-            public void setUser_relation(int user_relation) {
-                this.user_relation = user_relation;
-            }
-
-            public String getUser_auth_info() {
-                return user_auth_info;
-            }
-
-            public void setUser_auth_info(String user_auth_info) {
-                this.user_auth_info = user_auth_info;
-            }
-
-            public int getDigg_count() {
-                return digg_count;
-            }
-
-            public void setDigg_count(int digg_count) {
-                this.digg_count = digg_count;
-            }
-
-            public int getCreate_time() {
-                return create_time;
-            }
-
-            public void setCreate_time(int create_time) {
-                this.create_time = create_time;
-            }
-
-            public List<?> getReply_list() {
-                return reply_list;
-            }
-
-            public void setReply_list(List<?> reply_list) {
-                this.reply_list = reply_list;
-            }
-
-            public List<?> getAuthor_badge() {
-                return author_badge;
-            }
-
-            public void setAuthor_badge(List<?> author_badge) {
-                this.author_badge = author_badge;
-            }
-        }
-    }
-}

+ 0 - 129
app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/binder/NewsArticleImgViewBinder.java

@@ -1,129 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.news.model.binder;
-
-import android.annotation.SuppressLint;
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.PopupMenu;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.blankj.utilcode.util.TimeUtils;
-import com.jakewharton.rxbinding2.view.RxView;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleDataBean;
-import org.yczbj.ycvideoplayer.util.ImageUtil;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-
-import java.util.List;
-import java.util.concurrent.TimeUnit;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import io.reactivex.functions.Consumer;
-import me.drakeet.multitype.ItemViewBinder;
-
-/**
- * 带图片的 item
- */
-
-public class NewsArticleImgViewBinder extends ItemViewBinder<MultiNewsArticleDataBean, NewsArticleImgViewBinder.ViewHolder> {
-
-    @NonNull
-    @Override
-    protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
-        View view = inflater.inflate(R.layout.item_news_article_img, parent, false);
-        return new ViewHolder(view);
-    }
-
-    @SuppressLint("SetTextI18n")
-    @Override
-    protected void onBindViewHolder(@NonNull final ViewHolder holder, @NonNull final MultiNewsArticleDataBean item) {
-
-        final Context context = holder.itemView.getContext();
-
-        try {
-            String imgUrl = "http://p3.pstatp.com/";
-            List<MultiNewsArticleDataBean.ImageListBean> image_list = item.getImage_list();
-            if (image_list != null && image_list.size() != 0) {
-                String url = image_list.get(0).getUrl();
-                ImageUtil.loadImgByPicasso(context,url,R.drawable.image_default,holder.ivImage);
-                if (!TextUtils.isEmpty(image_list.get(0).getUri())) {
-                    imgUrl += image_list.get(0).getUri().replace("list", "large");
-                }
-            }
-
-            if (null != item.getUser_info()) {
-                String avatar_url = item.getUser_info().getAvatar_url();
-                if (!TextUtils.isEmpty(avatar_url)) {
-                    ImageUtil.loadImgByPicasso(context,avatar_url,R.drawable.image_default,holder.ivMedia);
-                }
-            }
-
-            String tv_title = item.getTitle();
-            String tv_abstract = item.getAbstractX();
-            String tv_source = item.getSource();
-            String tv_comment_count = item.getComment_count() + "评论";
-            String tv_datetime = item.getBehot_time() + "";
-            if (!TextUtils.isEmpty(tv_datetime)) {
-                tv_datetime = TimeUtils.getFriendlyTimeSpanByNow(tv_datetime);
-            }
-
-            holder.tvTitle.setText(tv_title);
-            holder.tvTitle.setTextSize(SettingUtil.getInstance().getTextSize());
-            holder.tvAbstract.setText(tv_abstract);
-            holder.tvExtra.setText(tv_source + " - " + tv_comment_count + " - " + tv_datetime);
-            holder.ivDots.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-
-                }
-            });
-
-            final String finalImgUrl = imgUrl;
-            RxView.clicks(holder.itemView)
-                    .throttleFirst(1, TimeUnit.SECONDS)
-                    .subscribe(new Consumer<Object>() {
-                        @Override
-                        public void accept(@io.reactivex.annotations.NonNull Object o) throws Exception {
-                            //NewsContentActivity.launch(item, finalImgUrl);
-                        }
-                    });
-        } catch (Exception e) {
-
-        }
-    }
-
-    public class ViewHolder extends RecyclerView.ViewHolder {
-
-        @BindView(R.id.iv_media)
-        ImageView ivMedia;
-        @BindView(R.id.tv_extra)
-        TextView tvExtra;
-        @BindView(R.id.iv_dots)
-        ImageView ivDots;
-        @BindView(R.id.header)
-        LinearLayout header;
-        @BindView(R.id.tv_title)
-        TextView tvTitle;
-        @BindView(R.id.tv_abstract)
-        TextView tvAbstract;
-        @BindView(R.id.iv_image)
-        ImageView ivImage;
-        @BindView(R.id.ll_content)
-        LinearLayout llContent;
-
-        ViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-        }
-    }
-}

+ 0 - 114
app/src/main/java/org/yczbj/ycvideoplayer/ui/news/model/binder/NewsArticleTextViewBinder.java

@@ -1,114 +0,0 @@
-package org.yczbj.ycvideoplayer.ui.news.model.binder;
-
-import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.PopupMenu;
-import android.support.v7.widget.RecyclerView;
-import android.text.TextUtils;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-import android.widget.LinearLayout;
-import android.widget.TextView;
-
-import com.blankj.utilcode.util.TimeUtils;
-import com.jakewharton.rxbinding2.view.RxView;
-
-import org.yczbj.ycvideoplayer.R;
-import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleDataBean;
-import org.yczbj.ycvideoplayer.util.ImageUtil;
-import org.yczbj.ycvideoplayer.util.SettingUtil;
-
-import java.util.concurrent.TimeUnit;
-
-import butterknife.BindView;
-import butterknife.ButterKnife;
-import io.reactivex.functions.Consumer;
-import me.drakeet.multitype.ItemViewBinder;
-
-/**
- * 不带图片的 item
- */
-
-public class NewsArticleTextViewBinder extends ItemViewBinder<MultiNewsArticleDataBean, NewsArticleTextViewBinder.ViewHolder> {
-
-    private static final String TAG = "NewsArticleTextViewBind";
-
-    @NonNull
-    @Override
-    protected ViewHolder onCreateViewHolder(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) {
-        View view = inflater.inflate(R.layout.item_news_article_text, parent, false);
-        return new ViewHolder(view);
-    }
-
-    @Override
-    protected void onBindViewHolder(@NonNull final ViewHolder holder, @NonNull final MultiNewsArticleDataBean item) {
-
-        final Context context = holder.itemView.getContext();
-
-        try {
-            if (null != item.getUser_info()) {
-                String avatar_url = item.getUser_info().getAvatar_url();
-                if (!TextUtils.isEmpty(avatar_url)) {
-                    ImageUtil.loadImgByPicasso(context,avatar_url,R.drawable.image_default,holder.ivMedia);
-                }
-            }
-
-            String tv_title = item.getTitle();
-            String tv_abstract = item.getAbstractX();
-            String tv_source = item.getSource();
-            String tv_comment_count = item.getComment_count() + "评论";
-            String tv_datetime = item.getBehot_time() + "";
-            if (!TextUtils.isEmpty(tv_datetime)) {
-                tv_datetime =  TimeUtils.getFriendlyTimeSpanByNow(tv_datetime);
-            }
-
-            holder.tvTitle.setText(tv_title);
-            holder.tvTitle.setTextSize(SettingUtil.getInstance().getTextSize());
-            holder.tvAbstract.setText(tv_abstract);
-            holder.tvExtra.setText(tv_source + " - " + tv_comment_count + " - " + tv_datetime);
-            holder.ivDots.setOnClickListener(new View.OnClickListener() {
-                @Override
-                public void onClick(View view) {
-
-                }
-            });
-
-            RxView.clicks(holder.itemView)
-                    .throttleFirst(1, TimeUnit.SECONDS)
-                    .subscribe(new Consumer<Object>() {
-                        @Override
-                        public void accept(@io.reactivex.annotations.NonNull Object o) throws Exception {
-                            //NewsContentActivity.launch(item);
-                        }
-                    });
-        } catch (Exception e) {
-
-        }
-    }
-
-    class ViewHolder extends RecyclerView.ViewHolder {
-
-        @BindView(R.id.iv_media)
-        ImageView ivMedia;
-        @BindView(R.id.tv_extra)
-        TextView tvExtra;
-        @BindView(R.id.iv_dots)
-        ImageView ivDots;
-        @BindView(R.id.header)
-        LinearLayout header;
-        @BindView(R.id.tv_title)
-        TextView tvTitle;
-        @BindView(R.id.tv_abstract)
-        TextView tvAbstract;
-        @BindView(R.id.content)
-        LinearLayout content;
-        ViewHolder(View itemView) {
-            super(itemView);
-            ButterKnife.bind(this, itemView);
-        }
-    }
-}

Some files were not shown because too many files changed in this diff