Selaa lähdekoodia

YCVideoPlayer

yangchong 7 vuotta sitten
vanhempi
commit
ba634b1885

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

@@ -65,6 +65,7 @@ public abstract class AbsVideoPlayerController extends FrameLayout implements Vi
         mVideoPlayer = videoPlayer;
     }
 
+
     /**
      * 设置试看视频时间,让使用者自己定制
      * @param time                  时间

+ 5 - 1
YCVideoPlayerLib/src/main/java/org/yczbj/ycvideoplayerlib/VideoPlayerController.java

@@ -238,7 +238,6 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
     }
 
 
-
     /**
      * 18年1月12号添加
      * 设置加载loading类型
@@ -263,6 +262,7 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         }
     }
 
+
     /**
      * 设置试看视频时间,让使用者自己定制
      * @param time                  时间
@@ -802,6 +802,10 @@ public class VideoPlayerController extends AbsVideoPlayerController implements V
         }
     }
 
+    /**
+     * 获取是否是锁屏模式
+     * @return              true表示锁屏
+     */
     public boolean getLock(){
         return mIsLock;
     }

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

@@ -37,7 +37,7 @@
         <activity android:name=".ui.movie.view.activity.MovieDetailActivity"
             android:configChanges="orientation|keyboardHidden|screenSize"
             android:screenOrientation="portrait"/>
-
+        <activity android:name=".ui.movie.view.activity.MovieNewsActivity"/>
 
 
         <!--下面这些均是测试视频播放器-->

+ 56 - 0
app/src/main/java/org/yczbj/ycvideoplayer/api/http/wangyi/WyApi.java

@@ -0,0 +1,56 @@
+package org.yczbj.ycvideoplayer.api.http.wangyi;
+
+
+import org.yczbj.ycvideoplayer.ui.news.model.bean.NewsCommentBean;
+import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.ResponseBody;
+import retrofit2.Call;
+import retrofit2.http.FieldMap;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.Headers;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+
+/**
+ * 参考 : https://github.com/hrscy/TodayNews/blob/master/news.json
+ */
+
+public interface WyApi {
+
+
+    @GET("api/channelInfo?platformType=androidPhone&adapterNo=7.0.0&pid=&recommendNo=3,2&positionId=&pageSize=20&protocol=1.0.0")
+    Observable<String> getTabs();
+
+    @GET("api/homePageList?platformType=androidPhone&isNotModified=0&adapterNo=7.0.0&protocol=1.0.0")
+    Observable<String> refreshVideos(@Query("channelId") int tabId,
+                                     @Query("pageSize") int pageSize,
+                                     @Query("requireTime") String requireTime);
+
+    @GET("api/homePageList?platformType=androidPhone&isNotModified=0&adapterNo=7.0.0&protocol=1.0.0")
+    Observable<String> loadMoreVideos(@Query("channelId") int tabId,
+                                      @Query("pageSize") int pageSize,
+                                      @Query("positionId") String positionId);
+
+    /**
+     * 网易视频
+     */
+    @GET("recommend/getChanListNews?channel=T1457068979049&fn=3&passport=h3o88AuDhdH7tlyrE3hlILX2WMCoMqapk08GhEzPqX4%3D&devId=DWT861zlolJo7mHnyynnGA%3D%3D&version=15.0&net=wifi&ts=1474185450&sign=JmMhXTnPo%2BqgTgwyxKstDgS9lmS5Pv%2BUCP5tZ%2FrWevV48ErR02zJ6%2FKXOnxX046I&encryption=1")
+    Observable<String> getVideos(@Query("size") int size, @Query("offset") int offset);
+
+
+    /**
+     * 头条快报视频
+     * http://video.toutiaokuaibao.com/app_video/getvideos
+     */
+    @Headers({/*"Content-Type: application/x-www-form-urlencoded;charset=UTF-8",*/
+            "Accept-Encoding: gzip",
+            "User-Agent: okhttp/3.2.0"})
+    @FormUrlEncoded
+    @POST("app_video/getvideos")
+    Observable<String> getVideos(@FieldMap Map<String, String> fieldMap);
+}

+ 53 - 0
app/src/main/java/org/yczbj/ycvideoplayer/api/http/wangyi/WyModel.java

@@ -0,0 +1,53 @@
+package org.yczbj.ycvideoplayer.api.http.wangyi;
+
+
+import org.yczbj.ycvideoplayer.api.manager.RetrofitWrapper;
+import org.yczbj.ycvideoplayer.ui.video.model.bean.MultiNewsArticleBean;
+
+import io.reactivex.Observable;
+
+
+/**
+ * Created by PC on 2017/8/21.
+ * 作者:PC
+ */
+
+public class WyModel {
+
+    private static WyModel model;
+    private WyApi mApiService;
+    private static final String NETEASY_BASE_URL = "http://c.m.163.com/";
+    private static final String TTKB_BASE_URL = "http://video.toutiaokuaibao.com/";
+    private static final String IFENG_BASE_URL = "http://vcis.ifeng.com/";
+
+    private WyModel(int type) {
+        switch (type){
+            case 1:
+                mApiService = RetrofitWrapper
+                        .getInstance(NETEASY_BASE_URL)
+                        .create(WyApi.class);
+                break;
+            case 2:
+                mApiService = RetrofitWrapper
+                        .getInstance(TTKB_BASE_URL)
+                        .create(WyApi.class);
+                break;
+            case 3:
+                mApiService = RetrofitWrapper
+                        .getInstance(IFENG_BASE_URL)
+                        .create(WyApi.class);
+                break;
+            default:
+                break;
+        }
+    }
+
+    public static WyModel getInstance(int type){
+        if(model == null) {
+            model = new WyModel(type);
+        }
+        return model;
+    }
+
+
+}

+ 67 - 0
app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/activity/MovieNewsActivity.java

@@ -0,0 +1,67 @@
+package org.yczbj.ycvideoplayer.ui.movie.view.activity;
+
+import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
+import android.support.v4.view.ViewPager;
+import com.blankj.utilcode.util.Utils;
+import org.yczbj.ycvideoplayer.R;
+import org.yczbj.ycvideoplayer.base.BasePagerAdapter;
+import org.yczbj.ycvideoplayer.base.mvp1.BaseActivity;
+import org.yczbj.ycvideoplayer.ui.movie.view.fragment.MovieNewsFragment;
+import org.yczbj.ycvideoplayer.util.SettingUtil;
+import java.util.ArrayList;
+import java.util.List;
+import butterknife.Bind;
+
+/**
+ * Created by yc on 2018/3/6.
+ *
+ */
+
+public class MovieNewsActivity extends BaseActivity {
+
+    @Bind(R.id.tab_layout)
+    TabLayout tabLayout;
+    @Bind(R.id.view_pager)
+    ViewPager viewPager;
+
+    private List<Fragment> fragmentList = new ArrayList<>();
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        tabLayout.setBackgroundColor(SettingUtil.getInstance().getColor());
+    }
+
+    @Override
+    public int getContentView() {
+        return R.layout.base_tab_view;
+    }
+
+    @Override
+    public void initView() {
+        tabLayout.setupWithViewPager(viewPager);
+        tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);
+        tabLayout.setBackgroundColor(SettingUtil.getInstance().getColor());
+        viewPager.setOffscreenPageLimit(3);
+    }
+
+    @Override
+    public void initListener() {
+
+    }
+
+    @Override
+    public void initData() {
+        String[] movieNews = Utils.getContext().getResources().getStringArray(R.array.movie_news);
+        ArrayList<String> title = new ArrayList<>();
+        for (int i = 0; i < movieNews.length; i++) {
+            Fragment fragment = MovieNewsFragment.newInstance(movieNews[i]);
+            fragmentList.add(fragment);
+            title.add(movieNews[i]);
+        }
+        BasePagerAdapter adapter = new BasePagerAdapter(getSupportFragmentManager(), fragmentList, title);
+        viewPager.setAdapter(adapter);
+    }
+
+}

+ 40 - 0
app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/adapter/MovieNewsAdapter.java

@@ -0,0 +1,40 @@
+package org.yczbj.ycvideoplayer.ui.movie.view.adapter;
+
+import android.app.Activity;
+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.special.model.SpecialBean;
+
+public class MovieNewsAdapter extends RecyclerArrayAdapter<SpecialBean> {
+
+    public MovieNewsAdapter(Activity activity) {
+        super(activity);
+    }
+
+    @Override
+    public BaseViewHolder OnCreateViewHolder(ViewGroup parent, int viewType) {
+        return new ExpressDeliveryViewHolder(parent);
+    }
+
+    private class ExpressDeliveryViewHolder extends BaseViewHolder<SpecialBean> {
+
+        ImageView iv_topic_face;
+        TextView tv_topic_name , tv_topic_tips ,tv_topic_comment , tv_topic_node ,tv_topic_title;
+
+        ExpressDeliveryViewHolder(ViewGroup parent) {
+            super(parent, R.layout.view_vlayout_news);
+
+        }
+
+        @Override
+        public void setData(SpecialBean data) {
+            super.setData(data);
+
+        }
+    }
+}

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

@@ -27,6 +27,7 @@ import org.yczbj.ycvideoplayer.ui.main.view.activity.MainActivity;
 import org.yczbj.ycvideoplayer.ui.movie.contract.MovieContract;
 import org.yczbj.ycvideoplayer.ui.movie.model.MovieBean;
 import org.yczbj.ycvideoplayer.ui.movie.presenter.MoviePresenter;
+import org.yczbj.ycvideoplayer.ui.movie.view.activity.MovieNewsActivity;
 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;
@@ -229,7 +230,7 @@ public class MovieFragment extends BaseFragment implements MovieContract.View{
                                 startActivity(MediaPlayerActivity.class);
                                 break;
                             case R.id.tv_special_second:
-
+                                startActivity(MovieNewsActivity.class);
                                 break;
                             case R.id.tv_special_third:
 

+ 114 - 0
app/src/main/java/org/yczbj/ycvideoplayer/ui/movie/view/fragment/MovieNewsFragment.java

@@ -0,0 +1,114 @@
+package org.yczbj.ycvideoplayer.ui.movie.view.fragment;
+
+import android.content.Context;
+import android.graphics.Color;
+import android.os.Bundle;
+import android.support.v4.widget.SwipeRefreshLayout;
+import android.support.v7.widget.LinearLayoutManager;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.LinearLayout;
+
+import com.blankj.utilcode.util.SizeUtils;
+
+import org.yczbj.ycrefreshviewlib.YCRefreshView;
+import org.yczbj.ycrefreshviewlib.adapter.RecyclerArrayAdapter;
+import org.yczbj.ycrefreshviewlib.item.RecycleViewItemLine;
+import org.yczbj.ycvideoplayer.R;
+import org.yczbj.ycvideoplayer.base.mvp1.BaseLazyFragment;
+import org.yczbj.ycvideoplayer.ui.movie.view.activity.MovieNewsActivity;
+import org.yczbj.ycvideoplayer.ui.movie.view.adapter.MovieNewsAdapter;
+import org.yczbj.ycvideoplayer.ui.video.view.adapter.VideoArticleAdapter;
+
+import butterknife.Bind;
+import butterknife.ButterKnife;
+
+/**
+ * Created by yc on 2018/3/6.
+ */
+
+public class MovieNewsFragment extends BaseLazyFragment {
+
+    @Bind(R.id.recyclerView)
+    YCRefreshView recyclerView;
+
+    private static final String TAG = "MovieNewsFragment";
+    private MovieNewsActivity activity;
+    private MovieNewsAdapter adapter;
+
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        activity = (MovieNewsActivity) context;
+    }
+
+    @Override
+    public void onDetach() {
+        super.onDetach();
+        activity = null;
+    }
+
+    public static MovieNewsFragment newInstance(String categoryId) {
+        Bundle bundle = new Bundle();
+        bundle.putString(TAG, categoryId);
+        MovieNewsFragment fragment = new MovieNewsFragment();
+        fragment.setArguments(bundle);
+        return fragment;
+    }
+
+
+    @Override
+    public int getContentView() {
+        return R.layout.base_easy_recycle;
+    }
+
+
+    @Override
+    public void initView() {
+        initRecyclerView();
+    }
+
+    @Override
+    public void initListener() {
+        adapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() {
+            @Override
+            public void onItemClick(int position) {
+
+            }
+        });
+    }
+
+    @Override
+    public void initData() {
+
+    }
+
+    @Override
+    public void onLazyLoad() {
+
+    }
+
+
+    private void initRecyclerView() {
+        recyclerView.setLayoutManager(new LinearLayoutManager(activity));
+        final RecycleViewItemLine line = new RecycleViewItemLine(activity, LinearLayout.HORIZONTAL,
+                SizeUtils.dp2px(1), Color.parseColor("#f5f5f7"));
+        recyclerView.addItemDecoration(line);
+        adapter = new MovieNewsAdapter(activity);
+        recyclerView.setAdapter(adapter);
+        recyclerView.setRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+            @Override
+            public void onRefresh() {
+                SwipeRefreshLayout swipeToRefresh = recyclerView.getSwipeToRefresh();
+                if (swipeToRefresh.isRefreshing()) {
+                    recyclerView.setRefreshing(false);
+                }
+            }
+        });
+    }
+
+
+
+
+}

+ 6 - 0
app/src/main/res/values/array.xml

@@ -61,4 +61,10 @@
     </string-array>
 
 
+    <string-array name="movie_news">
+        <item>网易视频</item>
+        <item>头条视频</item>
+        <item>凤凰视频</item>
+    </string-array>
+
 </resources>