Skip to content

Commit

Permalink
add viewpager2
Browse files Browse the repository at this point in the history
  • Loading branch information
CarGuo committed Oct 16, 2020
1 parent 236b768 commit a678e31
Show file tree
Hide file tree
Showing 12 changed files with 257 additions and 52 deletions.
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ dependencies {
implementation viewDependencies.glideProcessor
implementation androidDependencies.support_v4
implementation androidDependencies.design
implementation androidDependencies.viewpager2

implementation project(':gsyVideoPlayer')

Expand Down
71 changes: 27 additions & 44 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:ignore="LockedOrientationActivity"
package="com.example.gsyvideoplayer">

package="com.example.gsyvideoplayer"
tools:ignore="LockedOrientationActivity">
<!-- 请求访问网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 请求访问网络 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 请求访问网络 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Expand All @@ -18,10 +16,11 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
android:theme="@style/AppTheme">
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true">
<activity android:name=".ViewPager2Activity"></activity>
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
Expand Down Expand Up @@ -134,31 +133,25 @@
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />

<activity
android:name=".ListADVideoActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />


<activity
android:name=".ListADVideoActivity2"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />

<activity
android:name=".exo.DetailExoListPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait" />

<activity
android:name=".simple.SimplePlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Full"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Full" />
<activity
android:name=".simple.SimpleDetailActivityMode1"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
Expand All @@ -167,69 +160,59 @@
android:name=".simple.SimpleDetailActivityMode2"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait" />

<activity
android:name=".simple.SimpleListVideoActivityMode1"
android:theme="@style/Theme.AppCompat.Translucent"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />
<activity
android:name=".simple.SimpleListVideoActivityMode2"
android:theme="@style/Theme.AppCompat.Translucent"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />
<activity
android:name=".simple.SimpleActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:screenOrientation="portrait" />

<activity
android:name=".switchplay.SwitchListVideoActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".switchplay.SwitchDetailActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".RecyclerView3Activity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".DetailNormalActivityPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".DetailDownloadPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".AudioDetailPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />

android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />
<activity
android:name=".exosubtitle.GSYExoSubTitleDetailPlayer"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|screenLayout|smallestScreenSize|uiMode"
android:theme="@style/Theme.AppCompat.Transitions"
android:screenOrientation="portrait" />
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Transitions" />

<meta-data
android:name="android.max_aspect"
android:value="2.1" />
</application>


</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -317,9 +317,9 @@ private String getUrl() {
//String url = "http://video.7k.cn/app_video/20171202/6c8cf3ea/v.m3u8.mp4";
//String url = "http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8";
//String url = "rtmp://ctc-zhenjiang04.rt1.gensee.com/5324e855b28b453db7b0ec226598b76c_171391_0_8801038305_1591077225_205d01b8/video";
String url = "http://video1.dgtle.com/backend%2F2020%2F3%2F0%2F%E6%88%91%E6%B2%A1%E6%9C%89%E7%BB%99%E4%B8%80%E5%8A%A08Pro%E5%81%9A%E8%AF%84%E6%B5%8B_%E5%8D%B4%E5%B8%A6%E7%9D%80%E5%AE%83%E6%BC%82%E6%B5%81.mp4_1080.mp4";
//String url = "http://video1.dgtle.com/backend%2F2020%2F3%2F0%2F%E6%88%91%E6%B2%A1%E6%9C%89%E7%BB%99%E4%B8%80%E5%8A%A08Pro%E5%81%9A%E8%AF%84%E6%B5%8B_%E5%8D%B4%E5%B8%A6%E7%9D%80%E5%AE%83%E6%BC%82%E6%B5%81.mp4_1080.mp4";
//String url = "http://yongtaizx.xyz/20191230/t2Axgh3k/index.m3u8";
//String url = "https://pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4";
String url = "https://pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4";
//String url = "http://pointshow.oss-cn-hangzhou.aliyuncs.com/transcode/ORIGINAL/Mnbc61586842828593.mp4";
//ssl error
//String url = "https://file.shftz.cn:8443/filesystem/download/10/2019/3/26/ce2c7c66-e9eb-42be-adf6-f9008385ea8c.mov/play";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
@OnClick({R.id.open_btn, R.id.list_btn, R.id.list_btn_2, R.id.list_detail, R.id.clear_cache, R.id.recycler, R.id.recycler_2, R.id.list_detail_list, R.id.web_detail, R.id.danmaku_video, R.id.fragment_video,
R.id.more_type, R.id.input_type, R.id.open_btn_empty, R.id.open_control, R.id.open_filter, R.id.open_btn_pick, R.id.open_btn_auto, R.id.open_scroll, R.id.open_window, R.id.open_btn_ad,
R.id.open_btn_multi, R.id.open_btn_ad2, R.id.open_list_ad, R.id.open_custom_exo, R.id.open_simple, R.id.open_switch, R.id.media_codec, R.id.detail_normal_activity,
R.id.detail_download_activity, R.id.detail_audio_activity, R.id.detail_subtitle_activity, R.id.change_core})
R.id.detail_download_activity, R.id.detail_audio_activity, R.id.detail_subtitle_activity, R.id.change_core, R.id.view_pager2_activity})
public void onClick(View view) {
switch (view.getId()) {
case R.id.open_simple:
Expand Down Expand Up @@ -184,6 +184,9 @@ public void onClick(View view) {
case R.id.detail_audio_activity:
JumpUtils.goToDetailAudioActivity(this);
break;
case R.id.view_pager2_activity:
JumpUtils.goToViewPager2Activity(this);
break;
case R.id.change_core:
i += 1;
if (i % 3 == 0) {
Expand Down
107 changes: 107 additions & 0 deletions app/src/main/java/com/example/gsyvideoplayer/ViewPager2Activity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.example.gsyvideoplayer;

import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.RecyclerView;
import androidx.viewpager2.widget.ViewPager2;

import android.os.Bundle;
import android.view.View;

import com.example.gsyvideoplayer.adapter.ViewPagerAdapter;
import com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder;
import com.example.gsyvideoplayer.model.VideoModel;
import com.shuyu.gsyvideoplayer.GSYVideoManager;

import java.util.ArrayList;
import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;

public class ViewPager2Activity extends AppCompatActivity {

@BindView(R.id.view_pager2)
ViewPager2 viewPager2;

List<VideoModel> dataList = new ArrayList<>();

ViewPagerAdapter viewPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_pager2);
ButterKnife.bind(this);
resolveData();
viewPagerAdapter = new ViewPagerAdapter(this, dataList);
viewPager2.setOrientation(ViewPager2.ORIENTATION_VERTICAL);
viewPager2.setAdapter(viewPagerAdapter);
viewPager2.registerOnPageChangeCallback(new ViewPager2.OnPageChangeCallback() {
@Override
public void onPageSelected(int position) {
super.onPageSelected(position);
//大于0说明有播放
int playPosition = GSYVideoManager.instance().getPlayPosition();
if (playPosition >= 0) {
//对应的播放列表TAG
if (GSYVideoManager.instance().getPlayTag().equals(RecyclerItemNormalHolder.TAG)
&& (position != playPosition)) {
playPosition(position);
}
}
}
});
viewPager2.post(new Runnable() {
@Override
public void run() {
playPosition(0);
}
});
}

@Override
public void onBackPressed() {
if (GSYVideoManager.backFromWindowFull(this)) {
return;
}
super.onBackPressed();
}

@Override
protected void onPause() {
super.onPause();
GSYVideoManager.onPause();
}

@Override
protected void onResume() {
super.onResume();
GSYVideoManager.onResume(false);
}

@Override
protected void onDestroy() {
super.onDestroy();
GSYVideoManager.releaseAllVideos();
}

private void resolveData() {
for (int i = 0; i < 19; i++) {
VideoModel videoModel = new VideoModel();
dataList.add(videoModel);
}
if (viewPagerAdapter != null)
viewPagerAdapter.notifyDataSetChanged();
}

private void playPosition(int position) {
RecyclerView.ViewHolder viewHolder = ((RecyclerView) viewPager2.getChildAt(0)).findViewHolderForAdapterPosition(position);
if (viewHolder != null) {
RecyclerItemNormalHolder recyclerItemNormalHolder = (RecyclerItemNormalHolder) viewHolder;
recyclerItemNormalHolder.getPlayer().startPlayLogic();
}
}
}



Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package com.example.gsyvideoplayer.adapter;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.gsyvideoplayer.R;
import com.example.gsyvideoplayer.holder.RecyclerItemNormalHolder;
import com.example.gsyvideoplayer.model.VideoModel;

import java.util.List;

public class ViewPagerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private final static String TAG = "RecyclerBaseAdapter";

private List<VideoModel> itemDataList = null;
private Context context = null;

public ViewPagerAdapter(Context context, List<VideoModel> itemDataList) {
this.itemDataList = itemDataList;
this.context = context;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent,
int viewType) {
View v = LayoutInflater.from(context).inflate(R.layout.layout_viewpager2_item, parent, false);
final RecyclerView.ViewHolder holder = new RecyclerItemNormalHolder(context, v);
return holder;

}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {
RecyclerItemNormalHolder recyclerItemViewHolder = (RecyclerItemNormalHolder) holder;
recyclerItemViewHolder.setRecyclerBaseAdapter(this);
recyclerItemViewHolder.onBind(position, itemDataList.get(position));
}

@Override
public int getItemCount() {
return itemDataList.size();
}


@Override
public int getItemViewType(int position) {
return 1;
}

public void setListData(List<VideoModel> data) {
itemDataList = data;
notifyDataSetChanged();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public void onBind(final int position, VideoModel videoModel) {
String url;
String title;
if (position % 2 == 0) {
url = "https://res.exexm.com/cw_145225549855002";
url = "https://pointshow.oss-cn-hangzhou.aliyuncs.com/McTk51586843620689.mp4";
title = "这是title";
} else {
url = "http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4";
Expand Down Expand Up @@ -97,7 +97,7 @@ public void onQuitFullscreen(String url, Object... objects) {
public void onEnterFullscreen(String url, Object... objects) {
super.onEnterFullscreen(url, objects);
GSYVideoManager.instance().setNeedMute(false);
gsyVideoPlayer.getCurrentPlayer().getTitleTextView().setText((String)objects[0]);
gsyVideoPlayer.getCurrentPlayer().getTitleTextView().setText((String) objects[0]);
}
}).build(gsyVideoPlayer);

Expand Down Expand Up @@ -126,4 +126,7 @@ private void resolveFullBtn(final StandardGSYVideoPlayer standardGSYVideoPlayer)
standardGSYVideoPlayer.startWindowFullscreen(context, true, true);
}

public SampleCoverVideo getPlayer() {
return gsyVideoPlayer;
}
}
Loading

0 comments on commit a678e31

Please sign in to comment.