Browse Source

YCVideoPlayer

yangchong 7 năm trước cách đây
mục cha
commit
ffa294a775
34 tập tin đã thay đổi với 550 bổ sung54 xóa
  1. 0 2
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/AbsVideoPlayerController.java
  2. 49 2
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoPlayer.java
  3. 8 0
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoPlayerManager.java
  4. 9 0
      YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoTextureView.java
  5. 2 2
      app/build.gradle
  6. 1 0
      app/src/main/AndroidManifest.xml
  7. 3 1
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList1Fragment.java
  8. 2 1
      app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList2Fragment.java
  9. 10 0
      app/src/main/java/org/yczbj/ycvideoplayer/model/exception/ApiException.java
  10. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/VideoPlayerJzActivity.java
  11. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/VideoPlayerMeActivity.java
  12. 0 2
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/adapter/DownloadVideoAdapter.java
  13. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/fragment/HomeFragment.java
  14. 1 0
      app/src/main/java/org/yczbj/ycvideoplayer/ui/main/view/activity/MainActivity.java
  15. 13 5
      app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/activity/MovieDetailActivity.java
  16. 5 11
      app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/fragment/MovieFragment.java
  17. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/person/MeCacheActivity.java
  18. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/person/adapter/MeCacheAdapter.java
  19. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/special/SpecialFragment.java
  20. 2 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test1/view/second/TestListFiveActivity.java
  21. 2 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test1/view/three/TestTinyFiveActivity.java
  22. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/activity/DLSingleTestActivity.java
  23. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/adapter/DLManyAdapter.java
  24. 1 1
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/adapter/DlMyFileAdapter.java
  25. 188 0
      app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test4/MediaPlayerActivity.java
  26. 12 0
      app/src/main/java/org/yczbj/ycvideoplayer/util/binding/BindView.java
  27. 39 0
      app/src/main/java/org/yczbj/ycvideoplayer/util/binding/ViewBinder.java
  28. 75 0
      app/src/main/res/layout/activity_media_player.xml
  29. 28 12
      app/src/main/res/layout/base_video_view.xml
  30. 10 3
      app/src/main/res/layout/fragment_home.xml
  31. 23 0
      app/src/main/res/layout/fragment_me.xml
  32. 57 0
      app/src/main/res/layout/fragment_movie.xml
  33. 1 1
      app/src/main/res/values/colors.xml
  34. 1 1
      app/src/main/res/values/styles.xml

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

@@ -11,9 +11,7 @@ import android.widget.ImageView;
 import java.util.ArrayList;
 import java.util.Timer;
 import java.util.TimerTask;
-import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
 /**
  * @author yc

+ 49 - 2
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoPlayer.java

@@ -5,6 +5,7 @@ import android.content.pm.ActivityInfo;
 import android.graphics.Color;
 import android.graphics.SurfaceTexture;
 import android.media.AudioManager;
+import android.media.MediaPlayer;
 import android.net.Uri;
 import android.util.AttributeSet;
 import android.view.Gravity;
@@ -204,6 +205,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
     }
 
     /**
+     * 注意:MediaPlayer没有这个方法
      * 设置播放速度,不必须
      * @param speed                     播放速度
      */
@@ -211,6 +213,9 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
     public void setSpeed(float speed) {
         if (mMediaPlayer instanceof IjkMediaPlayer) {
             ((IjkMediaPlayer) mMediaPlayer).setSpeed(speed);
+        } else if(mMediaPlayer instanceof MediaPlayer){
+            //((MediaPlayer) mMediaPlayer).setSpeed(speed);
+            VideoLogUtil.d("只有IjkPlayer才能设置播放速度");
         } else {
             VideoLogUtil.d("只有IjkPlayer才能设置播放速度");
         }
@@ -287,6 +292,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 设置播放位置
      * @param pos                   播放位置
@@ -298,6 +304,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 设置音量
      * @param volume                音量值
@@ -309,6 +316,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 判断是否开始播放
      * @return                      true表示播放未开始
@@ -318,6 +326,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_IDLE;
     }
 
+
     /**
      * 判断视频是否播放准备中
      * @return                      true表示播放准备中
@@ -327,6 +336,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_PREPARING;
     }
 
+
     /**
      * 判断视频是否准备就绪
      * @return                      true表示播放准备就绪
@@ -336,6 +346,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_PREPARED;
     }
 
+
     /**
      * 判断视频是否正在缓冲(播放器正在播放时,缓冲区数据不足,进行缓冲,缓冲区数据足够后恢复播放)
      * @return                      true表示正在缓冲
@@ -345,6 +356,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_BUFFERING_PLAYING;
     }
 
+
     /**
      * 判断是否是否缓冲暂停
      * @return                      true表示缓冲暂停
@@ -354,6 +366,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_BUFFERING_PAUSED;
     }
 
+
     /**
      * 判断视频是否正在播放
      * @return                      true表示正在播放
@@ -363,6 +376,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_PLAYING;
     }
 
+
     /**
      * 判断视频是否暂停播放
      * @return                      true表示暂停播放
@@ -372,6 +386,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_PAUSED;
     }
 
+
     /**
      * 判断视频是否播放错误
      * @return                      true表示播放错误
@@ -381,6 +396,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_ERROR;
     }
 
+
     /**
      * 判断视频是否播放完成
      * @return                      true表示播放完成
@@ -390,6 +406,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentState == STATE_COMPLETED;
     }
 
+
     /**
      * 判断视频是否播放全屏
      * @return                      true表示播放全屏
@@ -399,6 +416,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentMode == MODE_FULL_SCREEN;
     }
 
+
     /**
      * 判断视频是否播放小窗口
      * @return                      true表示播放小窗口
@@ -408,6 +426,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentMode == MODE_TINY_WINDOW;
     }
 
+
     /**
      * 判断视频是否正常播放
      * @return                      true表示正常播放
@@ -417,6 +436,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mCurrentMode == MODE_NORMAL;
     }
 
+
     /**
      * 获取最大音量
      * @return                  音量值
@@ -429,6 +449,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return 0;
     }
 
+
     /**
      * 获取音量值
      * @return                  音量值
@@ -441,6 +462,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return 0;
     }
 
+
     /**
      * 获取持续时长
      * @return                  long时间值
@@ -450,6 +472,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mMediaPlayer != null ? mMediaPlayer.getDuration() : 0;
     }
 
+
     /**
      * 获取播放位置
      * @return                  位置
@@ -459,6 +482,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mMediaPlayer != null ? mMediaPlayer.getCurrentPosition() : 0;
     }
 
+
     /**
      * 获取缓冲区百分比
      * @return                  百分比
@@ -468,10 +492,11 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return mBufferPercentage;
     }
 
+
     /**
      * 获取播放速度
      * @param speed             播放速度
-     * @return
+     * @return                  速度
      */
     @Override
     public float getSpeed(float speed) {
@@ -481,9 +506,10 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return 0;
     }
 
+
     /**
      * 获取播放速度
-     * @return
+     * @return                  速度
      */
     @Override
     public long getTcpSpeed() {
@@ -493,6 +519,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         return 0;
     }
 
+
     /**
      * 初始化音频管理器
      */
@@ -505,6 +532,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 初始化视频管理器
      */
@@ -530,6 +558,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 初始化TextureView
      */
@@ -537,6 +566,10 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         if (mTextureView == null) {
             mTextureView = new VideoTextureView(mContext);
             mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
+
+                /**
+                 * SurfaceTexture准备就绪
+                 */
                 @Override
                 public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
                     if (mSurfaceTexture == null) {
@@ -547,16 +580,25 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
                     }
                 }
 
+                /**
+                 * SurfaceTexture缓冲大小变化
+                 */
                 @Override
                 public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
 
                 }
 
+                /**
+                 * SurfaceTexture即将被销毁
+                 */
                 @Override
                 public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
                     return mSurfaceTexture == null;
                 }
 
+                /**
+                 * SurfaceTexture通过updateImage更新
+                 */
                 @Override
                 public void onSurfaceTextureUpdated(SurfaceTexture surface) {
 
@@ -565,6 +607,7 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
         }
     }
 
+
     /**
      * 添加TextureView到视图中
      */
@@ -605,9 +648,13 @@ public class VideoPlayer extends FrameLayout implements InterVideoPlayer{
             if (mSurface == null) {
                 mSurface = new Surface(mSurfaceTexture);
             }
+            //
             mMediaPlayer.setSurface(mSurface);
+            // 开始加载
             mMediaPlayer.prepareAsync();
+            // 播放准备中
             mCurrentState = STATE_PREPARING;
+            // 控制器,更新不同的播放状态的UI
             mController.onPlayStateChanged(mCurrentState);
             VideoLogUtil.d("STATE_PREPARING");
         } catch (IOException e) {

+ 8 - 0
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoPlayerManager.java

@@ -21,6 +21,7 @@ public class VideoPlayerManager {
         return sInstance;
     }
 
+
     /**
      * 获取对象
      * @return          VideoPlayerManager对象
@@ -29,6 +30,7 @@ public class VideoPlayerManager {
         return mVideoPlayer;
     }
 
+
     /**
      * 设置VideoPlayer
      * @param videoPlayer       VideoPlayerManager对象
@@ -40,6 +42,7 @@ public class VideoPlayerManager {
         }
     }
 
+
     /**
      * 当视频正在播放或者正在缓冲时,调用该方法暂停视频
      */
@@ -49,6 +52,7 @@ public class VideoPlayerManager {
         }
     }
 
+
     /**
      * 当视频暂停时或者缓冲暂停时,调用该方法重新开启视频播放
      */
@@ -58,6 +62,7 @@ public class VideoPlayerManager {
         }
     }
 
+
     /**
      * 释放,内部的播放器被释放掉,同时如果在全屏、小窗口模式下都会退出
      */
@@ -68,6 +73,7 @@ public class VideoPlayerManager {
         }
     }
 
+
     /**
      * 处理返回键逻辑
      * 如果是全屏,则退出全屏
@@ -83,4 +89,6 @@ public class VideoPlayerManager {
         }
         return false;
     }
+
+
 }

+ 9 - 0
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoTextureView.java

@@ -22,6 +22,11 @@ public class VideoTextureView extends TextureView {
         super(context);
     }
 
+    /**
+     * 自定义video大小
+     * @param videoWidth                宽
+     * @param videoHeight               高
+     */
     public void adaptVideoSize(int videoWidth, int videoHeight) {
         if (this.videoWidth != videoWidth && this.videoHeight != videoHeight) {
             this.videoWidth = videoWidth;
@@ -30,6 +35,10 @@ public class VideoTextureView extends TextureView {
         }
     }
 
+    /**
+     * 设置视频旋转角度
+     * @param rotation                  角度
+     */
     @Override
     public void setRotation(float rotation) {
         if (rotation != getRotation()) {

+ 2 - 2
app/build.gradle

@@ -85,9 +85,9 @@ dependencies {
     compile 'cn.yc:YCUtilsLib:1.5'                                  //公共类
     compile 'cn.yc:YCStateLib:1.1'                                  //状态管理
     compile 'cn.yc:YCBannerLib:1.2'                                 //轮播图
-    compile 'org.yczbj:YCRefreshViewLib:2.3'                        //RecyclerView封装
+    compile 'org.yczbj:YCRefreshViewLib:2.4'                        //RecyclerView封装
     compile 'cn.yc:YCBaseAdapterLib:1.2'                            //adapter封装
-    compile 'cn.yc:YCDialogLib:3.4'                                 //弹窗
+    compile 'cn.yc:YCDialogLib:3.5'                                 //弹窗
     compile 'cn.yc:YCProgressLib:1.2'                               //进度条
 //    compile 'cn.yc:YCVideoPlayerLib:2.3'                            //播放器
     compile project(':YCVideoPlayerLib')

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -130,6 +130,7 @@
         <activity android:name=".ui.test.test2.view.TestMySixActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
+        <activity android:name=".ui.test.test4.MediaPlayerActivity"/>
 
         <activity android:name=".ui.test.test3.ui.activity.DLSingleTestActivity"/>
         <activity android:name=".ui.test.test3.ui.activity.DLHybridTestActivity"/>

+ 3 - 1
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList1Fragment.java

@@ -4,7 +4,9 @@ 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.toast.ToastUtil;
+
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
+
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.model.LoadingEndBean;
 import org.yczbj.ycvideoplayer.util.SettingUtil;

+ 2 - 1
app/src/main/java/org/yczbj/ycvideoplayer/base/mvp2/BaseList2Fragment.java

@@ -5,7 +5,8 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.model.LoadingEndBean;

+ 10 - 0
app/src/main/java/org/yczbj/ycvideoplayer/model/exception/ApiException.java

@@ -0,0 +1,10 @@
+package org.yczbj.ycvideoplayer.model.exception;
+
+
+public class ApiException extends Exception{
+
+    public ApiException(String msg) {
+        super(msg);
+    }
+
+}

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

@@ -24,7 +24,7 @@ import android.widget.RelativeLayout;
 import android.widget.TextView;
 
 import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 import com.squareup.picasso.Picasso;
 
 import org.yczbj.ycrefreshviewlib.YCRefreshView;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/home/view/activity/VideoPlayerMeActivity.java

@@ -22,7 +22,7 @@ import android.widget.TextView;
 import com.blankj.utilcode.util.ScreenUtils;
 import com.blankj.utilcode.util.SizeUtils;
 import com.pedaily.yc.ycdialoglib.bottomLayout.BottomDialogFragment;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycrefreshviewlib.YCRefreshView;
 import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;

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

@@ -19,12 +19,10 @@ import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.model.FileDownloadStatus;
 import com.liulishuo.filedownloader.util.FileDownloadUtils;
 import com.ns.yc.ycprogresslib.CircleProgressbar;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.download.TaskViewHolderImp;
 import org.yczbj.ycvideoplayer.download.TasksManager;
-import org.yczbj.ycvideoplayer.download.TasksManagerModel;
 import org.yczbj.ycvideoplayer.ui.home.model.DialogListBean;
 import org.yczbj.ycvideoplayer.util.LogUtils;
 

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

@@ -12,7 +12,7 @@ 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.toast.ToastUtil;
+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.first.BaseViewHolder;

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

@@ -293,6 +293,7 @@ public class MainActivity extends BaseActivity implements MainContract.View {
         return this;
     }
 
+
     /**
      * 监听back键处理DrawerLayout和SearchView
      */

+ 13 - 5
app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/activity/MovieDetailActivity.java

@@ -6,6 +6,7 @@ import android.graphics.Color;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.Nullable;
+import android.support.design.widget.FloatingActionButton;
 import android.support.v7.widget.GridLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -18,7 +19,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycrefreshviewlib.YCRefreshView;
 import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;
@@ -27,7 +28,6 @@ import org.yczbj.ycrefreshviewlib.item.SpaceViewItemLine;
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
 import org.yczbj.ycvideoplayer.ui.home.model.VideoPlayerFavorite;
-import org.yczbj.ycvideoplayer.ui.home.view.activity.VideoPlayerMeActivity;
 import org.yczbj.ycvideoplayer.ui.home.view.adapter.NarrowImageAdapter;
 import org.yczbj.ycvideoplayer.ui.movie.contract.MovieDetailContract;
 import org.yczbj.ycvideoplayer.ui.movie.model.MovieDetailBean;
@@ -56,6 +56,9 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
     VideoPlayer videoPlayer;
     @Bind(R.id.recyclerView)
     YCRefreshView recyclerView;
+    @Bind(R.id.fab)
+    FloatingActionButton fab;
+
     private MovieDetailAdapter adapter;
 
     private MovieDetailContract.Presenter presenter = new MovieDetailPresenter(this);
@@ -85,12 +88,14 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
         presenter.unSubscribe();
     }
 
+
     @Override
     protected void onStop() {
         super.onStop();
         VideoPlayerManager.instance().releaseVideoPlayer();
     }
 
+
     @Override
     public void onBackPressed() {
         if (VideoPlayerManager.instance().onBackPressed()) {
@@ -105,8 +110,10 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
         return R.layout.base_video_view;
     }
 
+
     @Override
     public void initView() {
+        fab.setVisibility(View.VISIBLE);
         initIntentData();
         initVideoPlayer();
         initYCRefreshView();
@@ -262,6 +269,7 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
         });
     }
 
+
     private void initHeaderTitle() {
         adapter.addHeader(new RecyclerArrayAdapter.ItemView() {
             @Override
@@ -285,8 +293,8 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
     public void setAdapterData(MovieDetailBean movieDetailBean) {
         if(movieDetailBean!=null && movieDetailBean.getRet()!=null){
             MovieDetailBean.RetBean ret = movieDetailBean.getRet();
-            String hdurl = ret.getHDURL();
-            videoPlayer.setUp(hdurl,null);
+            String hdUrl = ret.getHDURL();
+            videoPlayer.setUp(hdUrl,null);
             controller.setTitle(ret.getTitle());
             String duration = ret.getDuration();
             controller.setLength(duration);
@@ -298,7 +306,7 @@ public class MovieDetailActivity extends BaseActivity implements MovieDetailCont
                 tvAuthor.setText("人物主演:"+ret.getActors());
                 tvType.setText("电影类型:"+ret.getVideoType());
                 tvTime.setText("放映时间:"+ret.getAirTime());
-                tvCity.setText("上映国家:"+ret.getRegion());
+                tvCity.setText("上映国家"+ret.getRegion());
 
                 if(ret.getAdv()!=null){
                     ImageUtil.loadImgByPicasso(MovieDetailActivity.this,

+ 5 - 11
app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/fragment/MovieFragment.java

@@ -14,7 +14,7 @@ import android.widget.LinearLayout;
 
 import com.blankj.utilcode.util.NetworkUtils;
 import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 import com.yc.cn.ycbannerlib.first.BannerView;
 import com.yc.cn.ycbannerlib.first.util.SizeUtil;
 
@@ -30,6 +30,7 @@ import org.yczbj.ycvideoplayer.ui.movie.presenter.MoviePresenter;
 import org.yczbj.ycvideoplayer.ui.movie.view.adapter.MovieAdapter;
 import org.yczbj.ycvideoplayer.ui.movie.view.adapter.MovieBannerAdapter;
 import org.yczbj.ycvideoplayer.ui.movie.view.activity.MovieDetailActivity;
+import org.yczbj.ycvideoplayer.ui.test.test4.MediaPlayerActivity;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -97,7 +98,7 @@ public class MovieFragment extends BaseFragment implements MovieContract.View{
 
     @Override
     public int getContentView() {
-        return R.layout.base_easy_recycle;
+        return R.layout.fragment_movie;
     }
 
     @Override
@@ -122,7 +123,6 @@ public class MovieFragment extends BaseFragment implements MovieContract.View{
 
     @Override
     public void initData() {
-        recyclerView.setProgressView(R.layout.view_custom_loading_data);
         recyclerView.showProgress();
         presenter.getData();
     }
@@ -226,7 +226,7 @@ public class MovieFragment extends BaseFragment implements MovieContract.View{
                     public void onClick(View v) {
                         switch (v.getId()){
                             case R.id.tv_special_first:
-
+                                startActivity(MediaPlayerActivity.class);
                                 break;
                             case R.id.tv_special_second:
 
@@ -338,13 +338,7 @@ public class MovieFragment extends BaseFragment implements MovieContract.View{
             adapter.clear();
             adapter.addAll(movieList);
             adapter.notifyDataSetChanged();
-            try {
-                Thread.sleep(3000);
-            } catch (InterruptedException e) {
-                e.printStackTrace();
-            }finally {
-                recyclerView.showRecycler();
-            }
+            recyclerView.showRecycler();
         }else{
             recyclerView.showEmpty();
             recyclerView.setEmptyView(R.layout.view_custom_empty_data);

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/MeCacheActivity.java

@@ -8,7 +8,7 @@ import android.widget.Button;
 import android.widget.LinearLayout;
 
 import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycrefreshviewlib.item.RecycleViewItemLine;
 import org.yczbj.ycrefreshviewlib.swipeMenu.OnSwipeMenuListener;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/person/adapter/MeCacheAdapter.java

@@ -19,7 +19,7 @@ import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.model.FileDownloadStatus;
 import com.liulishuo.filedownloader.util.FileDownloadUtils;
 import com.ns.yc.ycprogresslib.CircleProgressbar;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycrefreshviewlib.swipeMenu.OnSwipeMenuListener;
 import org.yczbj.ycvideoplayer.R;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/special/SpecialFragment.java

@@ -19,7 +19,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.blankj.utilcode.util.SizeUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 import com.yc.cn.ycbannerlib.first.BannerView;
 import com.yc.cn.ycbannerlib.first.util.SizeUtil;
 

+ 2 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test1/view/second/TestListFiveActivity.java

@@ -4,7 +4,8 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;

+ 2 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test1/view/three/TestTinyFiveActivity.java

@@ -4,7 +4,8 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.View;
 
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/activity/DLSingleTestActivity.java

@@ -10,7 +10,7 @@ import com.liulishuo.filedownloader.BaseDownloadTask;
 import com.liulishuo.filedownloader.FileDownloadSampleListener;
 import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.util.FileDownloadUtils;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.api.constant.ConstantVideo;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/adapter/DLManyAdapter.java

@@ -17,7 +17,7 @@ import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.model.FileDownloadStatus;
 import com.liulishuo.filedownloader.util.FileDownloadUtils;
 import com.ns.yc.ycprogresslib.CircleProgressbar;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.base.BaseApplication;

+ 1 - 1
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test3/ui/adapter/DlMyFileAdapter.java

@@ -19,7 +19,7 @@ import com.liulishuo.filedownloader.FileDownloader;
 import com.liulishuo.filedownloader.model.FileDownloadStatus;
 import com.liulishuo.filedownloader.util.FileDownloadUtils;
 import com.ns.yc.ycprogresslib.CircleProgressbar;
-import com.pedaily.yc.ycdialoglib.toast.ToastUtil;
+import com.pedaily.yc.ycdialoglib.customToast.ToastUtil;
 
 import org.yczbj.ycvideoplayer.R;
 import org.yczbj.ycvideoplayer.download.TasksManager;

+ 188 - 0
app/src/main/java/org/yczbj/ycvideoplayer/ui/test/test4/MediaPlayerActivity.java

@@ -0,0 +1,188 @@
+package org.yczbj.ycvideoplayer.ui.test.test4;
+
+import android.media.AudioManager;
+import android.media.MediaPlayer;
+import android.net.Uri;
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import org.yczbj.ycvideoplayer.R;
+import org.yczbj.ycvideoplayer.util.binding.BindView;
+import org.yczbj.ycvideoplayer.util.binding.ViewBinder;
+
+
+/**
+ * Created by yc on 2016/3/5.
+ * 仅用于练习和分析
+ */
+
+public class MediaPlayerActivity extends AppCompatActivity implements View.OnClickListener {
+
+    @BindView(R.id.surfaceView)
+    SurfaceView surfaceView;
+    @BindView(R.id.btnplay)
+    TextView btnplay;
+    @BindView(R.id.btnpause)
+    TextView btnpause;
+    @BindView(R.id.btnstop)
+    TextView btnstop;
+    @BindView(R.id.btnplay2)
+    TextView btnplay2;
+    @BindView(R.id.btnpause2)
+    TextView btnpause2;
+    @BindView(R.id.btnstop2)
+    TextView btnstop2;
+
+    private MediaPlayer mediaPlayer;
+    private int position;
+    private String url1 = "http://flashmedia.eastday.com/newdate/news/2016-11/shznews1125-19.mp4";
+    //音频url
+    private String url4 = "http://61.129.89.191/ThroughTrain/download.html?id=4035&flag=-org-";
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_media_player);
+        ViewBinder.bind(this);
+
+
+        btnstop.setOnClickListener(this);
+        btnplay.setOnClickListener(this);
+        btnpause.setOnClickListener(this);
+
+        btnstop2.setOnClickListener(this);
+        btnplay2.setOnClickListener(this);
+        btnpause2.setOnClickListener(this);
+
+        mediaPlayer = new MediaPlayer();
+        initSurface();
+    }
+
+
+    private void initSurface() {
+        // 设置SurfaceView自己不管理的缓冲区
+        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+        surfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
+            @Override
+            public void surfaceDestroyed(SurfaceHolder holder) {
+            }
+
+            @Override
+            public void surfaceCreated(SurfaceHolder holder) {
+                if (position > 0) {
+                    try {
+                        // 开始播放
+                        play();
+                        // 并直接从指定位置开始播放
+                        mediaPlayer.seekTo(position);
+                        position = 0;
+                    } catch (Exception e) {
+                    }
+                }
+            }
+
+            @Override
+            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+            }
+        });
+    }
+
+
+    @Override
+    public void onClick(View v) {
+        switch (v.getId()) {
+            case R.id.btnplay:
+                play();
+                break;
+            case R.id.btnpause:
+                if (mediaPlayer.isPlaying()) {
+                    mediaPlayer.pause();
+                    Toast.makeText(this, "暂停播放!", Toast.LENGTH_LONG).show();
+                } else {
+                    mediaPlayer.start();
+                    Toast.makeText(this, "继续播放!", Toast.LENGTH_LONG).show();
+                }
+                break;
+
+            case R.id.btnstop:
+                if (mediaPlayer.isPlaying()) {
+                    mediaPlayer.stop();
+                    Toast.makeText(this, "停止播放!", Toast.LENGTH_LONG).show();
+                }
+                break;
+            case R.id.btnplay2:
+                play2();
+                break;
+            case R.id.btnpause2:
+                if (mediaPlayer.isPlaying()) {
+                    mediaPlayer.pause();
+                    Toast.makeText(this, "暂停播放!", Toast.LENGTH_LONG).show();
+                } else {
+                    mediaPlayer.start();
+                    Toast.makeText(this, "继续播放!", Toast.LENGTH_LONG).show();
+                }
+                break;
+
+            case R.id.btnstop2:
+                if (mediaPlayer.isPlaying()) {
+                    mediaPlayer.stop();
+                    Toast.makeText(this, "停止播放!", Toast.LENGTH_LONG).show();
+                }
+                break;
+            default:
+                break;
+        }
+    }
+
+
+    @Override
+    protected void onPause() {
+        // 先判断是否正在播放
+        if (mediaPlayer.isPlaying()) {
+            // 如果正在播放我们就先保存这个播放位置
+            position = mediaPlayer.getCurrentPosition();
+            mediaPlayer.stop();
+        }
+        super.onPause();
+    }
+
+
+    private void play() {
+        try {
+            mediaPlayer.reset();
+            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
+            // 设置需要播放的视频
+            Uri uri = Uri.parse(url1);
+            mediaPlayer.setDataSource(getApplicationContext(), uri);
+            // 把视频画面输出到SurfaceView
+            mediaPlayer.setDisplay(surfaceView.getHolder());
+            mediaPlayer.prepare();
+            // 播放
+            mediaPlayer.start();
+            Toast.makeText(this, "开始播放!", Toast.LENGTH_LONG).show();
+        } catch (Exception e) {
+        }
+    }
+
+
+    private void play2() {
+        try {
+            mediaPlayer.reset();
+            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
+            // 设置需要播放的视频
+            Uri uri = Uri.parse(url4);
+            mediaPlayer.setDataSource(getApplicationContext(), uri);
+            mediaPlayer.prepare();
+            // 播放
+            mediaPlayer.start();
+            Toast.makeText(this, "开始播放!", Toast.LENGTH_LONG).show();
+        } catch (Exception e) {
+        }
+    }
+
+}

+ 12 - 0
app/src/main/java/org/yczbj/ycvideoplayer/util/binding/BindView.java

@@ -0,0 +1,12 @@
+package org.yczbj.ycvideoplayer.util.binding;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.FIELD)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface BindView {
+    int value();
+}

+ 39 - 0
app/src/main/java/org/yczbj/ycvideoplayer/util/binding/ViewBinder.java

@@ -0,0 +1,39 @@
+package org.yczbj.ycvideoplayer.util.binding;
+
+import android.app.Activity;
+import android.view.View;
+
+import java.lang.reflect.Field;
+
+/**
+ * 仅限于练习项目,实际开发还是用ButtonKnife注解框架
+ * @author yc
+ */
+public class ViewBinder {
+
+    public static void bind(Activity activity) {
+        bind(activity, activity.getWindow().getDecorView());
+    }
+
+    public static void bind(Object target, View source) {
+        Field[] fields = target.getClass().getDeclaredFields();
+        if (fields != null && fields.length > 0) {
+            for (Field field : fields) {
+                try {
+                    field.setAccessible(true);
+                    if (field.get(target) != null) {
+                        continue;
+                    }
+                    BindView bind = field.getAnnotation(BindView.class);
+                    if (bind != null) {
+                        int viewId = bind.value();
+                        field.set(target, source.findViewById(viewId));
+                    }
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
+}

+ 75 - 0
app/src/main/res/layout/activity_media_player.xml

@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical" >
+
+    <SurfaceView
+        android:id="@+id/surfaceView"
+        android:layout_width="fill_parent"
+        android:layout_height="300dp" />
+
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp"
+        android:background="@color/colorNavLine"
+        android:text="利用MediaPlayer播放音频"/>
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal" >
+        <TextView
+            android:id="@+id/btnplay"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="开始"/>
+        <TextView
+            android:id="@+id/btnpause"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="暂停"/>
+        <TextView
+            android:id="@+id/btnstop"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="停止"/>
+    </LinearLayout>
+
+
+    <TextView
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:padding="10dp"
+        android:background="@color/colorNavLine"
+        android:text="利用MediaPlayer+SurfaceView播放视频"/>
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal" >
+        <TextView
+            android:id="@+id/btnplay2"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="开始"/>
+        <TextView
+            android:id="@+id/btnpause2"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="暂停"/>
+        <TextView
+            android:id="@+id/btnstop2"
+            android:layout_width="60dp"
+            android:layout_height="60dp"
+            android:gravity="center"
+            android:text="停止"/>
+    </LinearLayout>
+
+
+</LinearLayout>

+ 28 - 12
app/src/main/res/layout/base_video_view.xml

@@ -1,22 +1,38 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
-
-    <!--视频播放器-->
-    <org.yczbj.ycvideoplayerlib.VideoPlayer
-        android:id="@+id/video_player"
+    <LinearLayout
         android:layout_width="match_parent"
-        android:layout_height="200dp" />
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+        <!--视频播放器-->
+        <org.yczbj.ycvideoplayerlib.VideoPlayer
+            android:id="@+id/video_player"
+            android:layout_width="match_parent"
+            android:layout_height="200dp" />
+        <!--视频播放器下面内容-->
+        <org.yczbj.ycrefreshviewlib.YCRefreshView
+            android:id="@+id/recyclerView"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+    </LinearLayout>
 
 
-    <!--视频播放器下面内容-->
-    <org.yczbj.ycrefreshviewlib.YCRefreshView
-        android:id="@+id/recyclerView"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"/>
+    <android.support.design.widget.FloatingActionButton
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/fab"
+        android:visibility="gone"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="15dp"
+        android:layout_alignParentBottom="true"
+        android:layout_alignParentEnd="true"
+        app:fabSize="mini"
+        tools:ignore="UnusedAttribute" />
 
-</LinearLayout>
+</RelativeLayout>

+ 10 - 3
app/src/main/res/layout/fragment_home.xml

@@ -6,10 +6,16 @@
     android:layout_height="match_parent">
 
     <android.support.v7.widget.Toolbar
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/toolbar"
         android:layout_width="match_parent"
-        android:layout_height="45dp"
-        app:contentInsetStart="0dp"
-        android:visibility="gone">
+        android:layout_height="50dp"
+        android:background="@color/colorTheme"
+        android:theme="@style/AppTheme.ActionBar"
+        app:contentInsetStart="0.0dp"
+        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
+        android:visibility="visible">
         <LinearLayout
             android:id="@+id/ll_search"
             android:layout_width="match_parent"
@@ -65,4 +71,5 @@
         </LinearLayout>
     </FrameLayout>
 
+
 </LinearLayout>

+ 23 - 0
app/src/main/res/layout/fragment_me.xml

@@ -5,6 +5,29 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent">
 
+
+
+    <android.support.v7.widget.Toolbar
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@color/colorTheme"
+        android:theme="@style/AppTheme.ActionBar"
+        app:contentInsetStart="0.0dp"
+        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
+        android:visibility="visible">
+        <TextView
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:text="个人中心"
+            android:textSize="18sp"
+            android:textColor="@color/colorWhite"/>
+    </android.support.v7.widget.Toolbar>
+
+
     <TextView
         android:id="@+id/tv_1"
         android:layout_width="match_parent"

+ 57 - 0
app/src/main/res/layout/fragment_movie.xml

@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+    <android.support.v7.widget.Toolbar
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/toolbar"
+        android:layout_width="match_parent"
+        android:layout_height="50dp"
+        android:background="@color/colorTheme"
+        android:theme="@style/AppTheme.ActionBar"
+        app:contentInsetStart="0.0dp"
+        app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
+        android:visibility="visible">
+        <LinearLayout
+            android:id="@+id/ll_search"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_centerInParent="true"
+            android:gravity="center"
+            android:paddingBottom="8dp"
+            android:paddingTop="8dp"
+            android:layout_marginStart="10dp"
+            android:layout_marginEnd="10dp"
+            android:background="@drawable/shape_search_bg">
+            <ImageView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:src="@drawable/icon_search_normal"/>
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_gravity="center"
+                android:layout_marginStart="10dp"
+                android:textColor="@color/blackText2"
+                android:textSize="12sp"
+                android:text="搜索更多音视频资源"/>
+        </LinearLayout>
+    </android.support.v7.widget.Toolbar>
+
+
+    <org.yczbj.ycrefreshviewlib.YCRefreshView
+        xmlns:app="http://schemas.android.com/apk/res-auto"
+        android:id="@+id/recyclerView"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        app:layout_progress="@layout/view_custom_loading_data"
+        app:layout_empty="@layout/view_custom_empty_data"
+        app:layout_error="@layout/view_custom_data_error"/>
+
+
+</LinearLayout>

+ 1 - 1
app/src/main/res/values/colors.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <color name="colorPrimary">#3F51B5</color>
-    <color name="colorPrimaryDark">#303F9F</color>
+    <color name="colorPrimaryDark">#252525</color>
     <color name="colorAccent">#FF4081</color>
     <!--<color name="colorAccent">#ffffff</color>-->
 

+ 1 - 1
app/src/main/res/values/styles.xml

@@ -51,7 +51,7 @@
         <item name="tabIndicatorHeight">2dp</item>
         <item name="tabPaddingStart">12dp</item>
         <item name="tabPaddingEnd">12dp</item>
-        <item name="tabBackground">?attr/selectableItemBackground</item>
+        <item name="tabBackground">@color/colorTheme</item>
         <item name="tabTextAppearance">@style/TextAppearance.Design.Tab</item>
         <item name="tabSelectedTextColor">?android:textColorPrimary</item>
     </style>