diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8b02b871b0066e1535084e1b7ee03efca14831e1..c423d5981dbdbc1e2df655b68d618b3fb1c39dcf 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -169,11 +169,24 @@ android:theme="@style/Theme.AppCompat.Translucent" android:configChanges="orientation|keyboardHidden|screenSize" android:screenOrientation="portrait" /> + + + + + diff --git a/app/src/main/java/com/example/gsyvideoplayer/MainActivity.java b/app/src/main/java/com/example/gsyvideoplayer/MainActivity.java index f83d7848ffeccbd5e7249d7187c4a04e61b76d48..d53a0061b3ad2766bb6d8179ca9381214c219a69 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/MainActivity.java +++ b/app/src/main/java/com/example/gsyvideoplayer/MainActivity.java @@ -55,7 +55,7 @@ public class MainActivity extends AppCompatActivity { @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_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}) public void onClick(View view) { switch (view.getId()) { case R.id.open_simple: @@ -154,6 +154,9 @@ public class MainActivity extends AppCompatActivity { //多个同时播放 JumpUtils.goToDetailExoListPlayer(this); break; + case R.id.open_switch: + JumpUtils.goToSwitch(this); + break; case R.id.clear_cache: //清理缓存 GSYVideoManager.instance().clearAllDefaultCache(MainActivity.this); diff --git a/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode1.java b/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode1.java index a8c743a24a173b71fa1120d463d2c68a7c6bf4ad..ca6d436a707149b40d48e53a993e72bd01a710f6 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode1.java +++ b/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode1.java @@ -6,7 +6,7 @@ import android.widget.AbsListView; import android.widget.ListView; import com.example.gsyvideoplayer.R; -import com.example.gsyvideoplayer.simple.adapter.SimpleListVideoModelAdapter; +import com.example.gsyvideoplayer.simple.adapter.SimpleListVideoModeAdapter; import com.shuyu.gsyvideoplayer.GSYVideoManager; /** @@ -16,7 +16,7 @@ public class SimpleListVideoActivityMode1 extends AppCompatActivity { ListView videoList; - SimpleListVideoModelAdapter listNormalAdapter; + SimpleListVideoModeAdapter listNormalAdapter; @Override protected void onCreate(Bundle savedInstanceState) { @@ -25,7 +25,7 @@ public class SimpleListVideoActivityMode1 extends AppCompatActivity { videoList = (ListView)findViewById(R.id.video_list); - listNormalAdapter = new SimpleListVideoModelAdapter(this); + listNormalAdapter = new SimpleListVideoModeAdapter(this); videoList.setAdapter(listNormalAdapter); videoList.setOnScrollListener(new AbsListView.OnScrollListener() { @@ -41,7 +41,7 @@ public class SimpleListVideoActivityMode1 extends AppCompatActivity { //当前播放的位置 int position = GSYVideoManager.instance().getPlayPosition(); //对应的播放列表TAG - if (GSYVideoManager.instance().getPlayTag().equals(SimpleListVideoModelAdapter.TAG) + if (GSYVideoManager.instance().getPlayTag().equals(SimpleListVideoModeAdapter.TAG) && (position < firstVisibleItem || position > lastVisibleItem)) { if(GSYVideoManager.isFullState(SimpleListVideoActivityMode1.this)) { return; diff --git a/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode2.java b/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode2.java index 931d5289622be8aa4ccc7846697cae212095add7..6529d59433ef7f65f76f7168be98faf53eaa2cbf 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode2.java +++ b/app/src/main/java/com/example/gsyvideoplayer/simple/SimpleListVideoActivityMode2.java @@ -8,7 +8,7 @@ import android.widget.ListView; import android.widget.RelativeLayout; import com.example.gsyvideoplayer.R; -import com.example.gsyvideoplayer.simple.adapter.SimpleListVideoModel2Adapter; +import com.example.gsyvideoplayer.simple.adapter.SimpleListVideoMode2Adapter; import com.shuyu.gsyvideoplayer.GSYVideoManager; import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; import com.shuyu.gsyvideoplayer.utils.CommonUtil; @@ -26,7 +26,7 @@ public class SimpleListVideoActivityMode2 extends AppCompatActivity { GSYVideoHelper smallVideoHelper; - SimpleListVideoModel2Adapter listVideoAdapter; + SimpleListVideoMode2Adapter listVideoAdapter; GSYVideoHelper.GSYVideoHelperBuilder gsySmallVideoHelperBuilder; @@ -59,7 +59,7 @@ public class SimpleListVideoActivityMode2 extends AppCompatActivity { public void onQuitSmallWidget(String url, Object... objects) { super.onQuitSmallWidget(url, objects); //大于0说明有播放,//对应的播放列表TAG - if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(SimpleListVideoModel2Adapter.TAG)) { + if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(SimpleListVideoMode2Adapter.TAG)) { //当前播放的位置 int position = smallVideoHelper.getPlayPosition(); //不可视的是时候 @@ -75,7 +75,7 @@ public class SimpleListVideoActivityMode2 extends AppCompatActivity { smallVideoHelper.setGsyVideoOptionBuilder(gsySmallVideoHelperBuilder); - listVideoAdapter = new SimpleListVideoModel2Adapter(this, smallVideoHelper, gsySmallVideoHelperBuilder); + listVideoAdapter = new SimpleListVideoMode2Adapter(this, smallVideoHelper, gsySmallVideoHelperBuilder); listVideoAdapter.setRootView(activityListVideo); videoList.setAdapter(listVideoAdapter); @@ -89,7 +89,7 @@ public class SimpleListVideoActivityMode2 extends AppCompatActivity { SimpleListVideoActivityMode2.this.firstVisibleItem = firstVisibleItem; lastVisibleItem = firstVisibleItem + visibleItemCount; //大于0说明有播放,//对应的播放列表TAG - if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(SimpleListVideoModel2Adapter.TAG)) { + if (smallVideoHelper.getPlayPosition() >= 0 && smallVideoHelper.getPlayTAG().equals(SimpleListVideoMode2Adapter.TAG)) { //当前播放的位置 int position = smallVideoHelper.getPlayPosition(); //不可视的是时候 diff --git a/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModel2Adapter.java b/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoMode2Adapter.java similarity index 92% rename from app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModel2Adapter.java rename to app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoMode2Adapter.java index d28a6a2758ccc457837bd1c3bcd8b5ddafcad7a5..3184d5bf0f9097c9e95b1c69c868e584d21e67d6 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModel2Adapter.java +++ b/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoMode2Adapter.java @@ -16,7 +16,7 @@ import com.shuyu.gsyvideoplayer.utils.OrientationUtils; import java.util.ArrayList; import java.util.List; -public class SimpleListVideoModel2Adapter extends BaseAdapter { +public class SimpleListVideoMode2Adapter extends BaseAdapter { public final static String TAG = "TT22"; @@ -34,7 +34,7 @@ public class SimpleListVideoModel2Adapter extends BaseAdapter { private GSYVideoHelper.GSYVideoHelperBuilder gsySmallVideoHelperBuilder; - public SimpleListVideoModel2Adapter(Context context, GSYVideoHelper smallVideoHelper, GSYVideoHelper.GSYVideoHelperBuilder gsySmallVideoHelperBuilder) { + public SimpleListVideoMode2Adapter(Context context, GSYVideoHelper smallVideoHelper, GSYVideoHelper.GSYVideoHelperBuilder gsySmallVideoHelperBuilder) { super(); this.context = context; this.smallVideoHelper = smallVideoHelper; @@ -67,7 +67,7 @@ public class SimpleListVideoModel2Adapter extends BaseAdapter { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); - convertView = inflater.inflate(R.layout.list_video_simple_model2, null); + convertView = inflater.inflate(R.layout.list_video_simple_mode2, null); holder.videoContainer = (FrameLayout) convertView.findViewById(R.id.list_item_container); holder.playerBtn = (ImageView) convertView.findViewById(R.id.list_item_btn); holder.imageView = new ImageView(context); diff --git a/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModelAdapter.java b/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModeAdapter.java similarity index 96% rename from app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModelAdapter.java rename to app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModeAdapter.java index d21befb81d3518f772e6e086fc962822d884e525..885e498f2bd48c80535b1c0e23cafdc9e20e53b6 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModelAdapter.java +++ b/app/src/main/java/com/example/gsyvideoplayer/simple/adapter/SimpleListVideoModeAdapter.java @@ -15,7 +15,7 @@ import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; import java.util.ArrayList; import java.util.List; -public class SimpleListVideoModelAdapter extends BaseAdapter { +public class SimpleListVideoModeAdapter extends BaseAdapter { public static final String TAG = "ListNormalAdapter22"; @@ -31,7 +31,7 @@ public class SimpleListVideoModelAdapter extends BaseAdapter { protected boolean isFull; - public SimpleListVideoModelAdapter(Context context) { + public SimpleListVideoModeAdapter(Context context) { super(); this.context = context; inflater = LayoutInflater.from(context); @@ -61,7 +61,7 @@ public class SimpleListVideoModelAdapter extends BaseAdapter { final ViewHolder holder; if (convertView == null) { holder = new ViewHolder(); - convertView = inflater.inflate(R.layout.list_video_simple_model1, null); + convertView = inflater.inflate(R.layout.list_video_simple_mode1, null); holder.gsyVideoPlayer = (SampleCoverVideo) convertView.findViewById(R.id.video_item_player); convertView.setTag(holder); } else { diff --git a/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchDetailActivity.java b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchDetailActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..0fa5d8738c7a5dd8775e64cd809189de1b557ebc --- /dev/null +++ b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchDetailActivity.java @@ -0,0 +1,133 @@ +package com.example.gsyvideoplayer.switchplay; + +import android.content.res.Configuration; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.ImageView; + +import com.example.gsyvideoplayer.R; +import com.shuyu.gsyvideoplayer.GSYVideoManager; +import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder; +import com.shuyu.gsyvideoplayer.listener.GSYSampleCallBack; +import com.shuyu.gsyvideoplayer.listener.LockClickListener; +import com.shuyu.gsyvideoplayer.utils.OrientationUtils; +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; + +/** + * 切换详情 + */ +public class SwitchDetailActivity extends AppCompatActivity { + + public static final String URL = "url"; + + SwitchVideo detailPlayer; + + private boolean isPlay = true; + private boolean isPause; + + private OrientationUtils orientationUtils; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.switch_activity_detail_player); + + detailPlayer = (SwitchVideo) findViewById(R.id.detail_player); + + + //增加title + detailPlayer.getTitleTextView().setVisibility(View.GONE); + detailPlayer.getBackButton().setVisibility(View.GONE); + + //外部辅助的旋转,帮助全屏 + orientationUtils = new OrientationUtils(this, detailPlayer); + //初始化不打开外部的旋转 + orientationUtils.setEnable(false); + + SwitchUtil.optionPlayer(detailPlayer, getIntent().getStringExtra(URL), true, "这是title"); + + SwitchUtil.clonePlayState(detailPlayer); + + detailPlayer.setIsTouchWiget(true); + + detailPlayer.setVideoAllCallBack(new GSYSampleCallBack() { + @Override + public void onPrepared(String url, Object... objects) { + super.onPrepared(url, objects); + //开始播放了才能旋转和全屏 + orientationUtils.setEnable(true); + } + + @Override + public void onQuitFullscreen(String url, Object... objects) { + super.onQuitFullscreen(url, objects); + if (orientationUtils != null) { + orientationUtils.backToProtVideo(); + } + } + }); + + detailPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //直接横屏 + orientationUtils.resolveByClick(); + //第一个true是否需要隐藏actionbar,第二个true是否需要隐藏statusbar + detailPlayer.startWindowFullscreen(SwitchDetailActivity.this, true, true); + } + }); + + detailPlayer.setSurfaceToPlay(); + } + + @Override + public void onBackPressed() { + if (orientationUtils != null) { + orientationUtils.backToProtVideo(); + } + if (GSYVideoManager.backFromWindowFull(this)) { + return; + } + super.onBackPressed(); + } + + + @Override + protected void onPause() { + detailPlayer.getCurrentPlayer().onVideoPause(); + super.onPause(); + isPause = true; + } + + @Override + protected void onResume() { + detailPlayer.getCurrentPlayer().onVideoResume(false); + super.onResume(); + isPause = false; + } + + @Override + protected void onDestroy() { + super.onDestroy(); + detailPlayer.getGSYVideoManager().setListener(detailPlayer.getGSYVideoManager().lastListener()); + detailPlayer.getGSYVideoManager().setLastListener(null); + GSYVideoManager.releaseAllVideos(); + if (orientationUtils != null) + orientationUtils.releaseListener(); + + SwitchUtil.release(); + } + + + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + //如果旋转了就全屏 + if (isPlay && !isPause) { + detailPlayer.onConfigurationChanged(this, newConfig, orientationUtils, true, true); + } + } + +} diff --git a/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoActivity.java b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoActivity.java new file mode 100644 index 0000000000000000000000000000000000000000..099db148cc17a78bd66845179914481a1cb509e0 --- /dev/null +++ b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoActivity.java @@ -0,0 +1,84 @@ +package com.example.gsyvideoplayer.switchplay; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.widget.AbsListView; +import android.widget.ListView; + +import com.example.gsyvideoplayer.R; +import com.example.gsyvideoplayer.simple.adapter.SimpleListVideoModeAdapter; +import com.shuyu.gsyvideoplayer.GSYVideoManager; + +/** + * 可切换列表 + */ +public class SwitchListVideoActivity extends AppCompatActivity { + + ListView videoList; + + SwitchListVideoAdapter listNormalAdapter; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_list_video); + + videoList = (ListView)findViewById(R.id.video_list); + + listNormalAdapter = new SwitchListVideoAdapter(this); + videoList.setAdapter(listNormalAdapter); + + videoList.setOnScrollListener(new AbsListView.OnScrollListener() { + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + int lastVisibleItem = firstVisibleItem + visibleItemCount; + //大于0说明有播放 + if (GSYVideoManager.instance().getPlayPosition() >= 0) { + //当前播放的位置 + int position = GSYVideoManager.instance().getPlayPosition(); + //对应的播放列表TAG + if (GSYVideoManager.instance().getPlayTag().equals(SwitchListVideoAdapter.TAG) + && (position < firstVisibleItem || position > lastVisibleItem)) { + if(GSYVideoManager.isFullState(SwitchListVideoActivity.this)) { + return; + } + //如果滑出去了上面和下面就是否,和今日头条一样 + GSYVideoManager.releaseAllVideos(); + listNormalAdapter.notifyDataSetChanged(); + } + } + } + }); + + } + + @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(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + GSYVideoManager.releaseAllVideos(); + } +} diff --git a/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoAdapter.java b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoAdapter.java new file mode 100644 index 0000000000000000000000000000000000000000..783a5c09d2cbce3257503481d4d1cb953e181b6c --- /dev/null +++ b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchListVideoAdapter.java @@ -0,0 +1,102 @@ +package com.example.gsyvideoplayer.switchplay; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.ImageView; + +import com.example.gsyvideoplayer.R; +import com.example.gsyvideoplayer.model.VideoModel; +import com.shuyu.gsyvideoplayer.utils.OrientationUtils; +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; + +import java.util.ArrayList; +import java.util.List; + +public class SwitchListVideoAdapter extends BaseAdapter { + + public static final String TAG = "SwitchListVideoAdapter"; + + private List list = new ArrayList<>(); + private LayoutInflater inflater; + private Context context; + + private StandardGSYVideoPlayer curPlayer; + + protected OrientationUtils orientationUtils; + + protected boolean isPlay; + + protected boolean isFull; + + public SwitchListVideoAdapter(Context context) { + super(); + this.context = context; + inflater = LayoutInflater.from(context); + for (int i = 0; i < 40; i++) { + list.add(new VideoModel()); + } + + } + + @Override + public int getCount() { + return list.size(); + } + + @Override + public Object getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; + } + + @Override + public View getView(final int position, View convertView, ViewGroup parent) { + final ViewHolder holder; + if (convertView == null) { + holder = new ViewHolder(); + convertView = inflater.inflate(R.layout.switch_list_video_item, null); + holder.gsyVideoPlayer = (SwitchVideo) convertView.findViewById(R.id.video_item_player); + holder.imageView = new ImageView(context); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + final String urlH = "http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4"; + final String urlV = "http://7xse1z.com1.z0.glb.clouddn.com/1491813192"; + final String url = (position % 2 == 0) ? urlH : urlV; + final int coverId = (position % 2 == 0) ? R.mipmap.xxx1 : R.mipmap.xxx2; + + + //防止错位设置 + holder.gsyVideoPlayer.setPlayTag(TAG); + holder.gsyVideoPlayer.setPlayPosition(position); + SwitchUtil.optionPlayer(holder.gsyVideoPlayer, url, true, "这是title"); + holder.gsyVideoPlayer.setUpLazy(url, true, null, null, "这是title"); + + //增加封面 + holder.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); + holder.imageView.setImageResource(coverId); + if (holder.imageView.getParent() != null) { + ViewGroup viewGroup = (ViewGroup) holder.imageView.getParent(); + viewGroup.removeView(holder.imageView); + } + holder.gsyVideoPlayer.setThumbImageView(holder.imageView); + holder.gsyVideoPlayer.getThumbImageViewLayout().setVisibility(View.VISIBLE); + + return convertView; + + } + + class ViewHolder { + SwitchVideo gsyVideoPlayer; + ImageView imageView; + } + +} diff --git a/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchUtil.java b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchUtil.java new file mode 100644 index 0000000000000000000000000000000000000000..3e67fa4d571e86d387faae84ff5d0db504605cab --- /dev/null +++ b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchUtil.java @@ -0,0 +1,58 @@ +package com.example.gsyvideoplayer.switchplay; + +import android.content.Context; +import android.content.Intent; +import android.view.View; + + +public class SwitchUtil { + + private static SwitchVideo sSwitchVideo; + + public static void optionPlayer(final SwitchVideo gsyVideoPlayer, String url, boolean cache, String title) { + //增加title + gsyVideoPlayer.getTitleTextView().setVisibility(View.GONE); + //设置返回键 + gsyVideoPlayer.getBackButton().setVisibility(View.GONE); + //设置全屏按键功能 + gsyVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + gsyVideoPlayer.startWindowFullscreen(gsyVideoPlayer.getContext(), false, true); + } + }); + //是否根据视频尺寸,自动选择竖屏全屏或者横屏全屏 + gsyVideoPlayer.setAutoFullWithSize(true); + //音频焦点冲突时是否释放 + gsyVideoPlayer.setReleaseWhenLossAudio(false); + //全屏动画 + gsyVideoPlayer.setShowFullAnimation(false); + //小屏时不触摸滑动 + gsyVideoPlayer.setIsTouchWiget(false); + + gsyVideoPlayer.setSwitchUrl(url); + + gsyVideoPlayer.setSwitchCache(cache); + + gsyVideoPlayer.setSwitchTitle(title); + } + + + public static void gotoDetail(Context context, String url) { + Intent intent = new Intent(context, SwitchDetailActivity.class); + intent.putExtra(SwitchDetailActivity.URL, url); + context.startActivity(intent); + } + + public static void savePlayState(SwitchVideo switchVideo) { + sSwitchVideo = switchVideo.saveState(); + } + + public static void clonePlayState(SwitchVideo switchVideo) { + switchVideo.cloneState(sSwitchVideo); + } + + public static void release() { + sSwitchVideo = null; + } +} diff --git a/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchVideo.java b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchVideo.java new file mode 100644 index 0000000000000000000000000000000000000000..37aaca78b16c6ef646b4e7ee6bd917008f786418 --- /dev/null +++ b/app/src/main/java/com/example/gsyvideoplayer/switchplay/SwitchVideo.java @@ -0,0 +1,82 @@ +package com.example.gsyvideoplayer.switchplay; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.TextView; + +import com.example.gsyvideoplayer.R; +import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer; + +public class SwitchVideo extends StandardGSYVideoPlayer { + + private TextView detailBtn; + + public SwitchVideo(Context context, Boolean fullFlag) { + super(context, fullFlag); + } + + public SwitchVideo(Context context) { + super(context); + } + + public SwitchVideo(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void init(Context context) { + super.init(context); + detailBtn = (TextView) findViewById(R.id.detail_btn); + detailBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (isInPlayingState()) { + SwitchUtil.savePlayState(SwitchVideo.this); + getGSYVideoManager().setLastListener(SwitchVideo.this); + SwitchUtil.gotoDetail(getContext(), mOriginUrl); + } + } + }); + if (mIfCurrentIsFullscreen) { + detailBtn.setVisibility(GONE); + } + + } + + @Override + public int getLayoutId() { + return R.layout.switch_video; + } + + + public void setSwitchUrl(String url) { + mUrl = url; + mOriginUrl = url; + } + + public void setSwitchCache(boolean cache) { + mCache = cache; + } + + public void setSwitchTitle(String title) { + mTitle = title; + } + + public void setSurfaceToPlay() { + addTextureView(); + getGSYVideoManager().setListener(this); + checkoutState(); + } + + public SwitchVideo saveState() { + SwitchVideo switchVideo = new SwitchVideo(getContext()); + cloneParams(this, switchVideo); + return switchVideo; + } + + public void cloneState(SwitchVideo switchVideo) { + cloneParams(switchVideo, this); + } + +} diff --git a/app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java b/app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java index 762aa3d2176115f287ea47809b3fde9e67d55407..8fe75b30f4aed3346f06c83d93afbee16e6d91dd 100644 --- a/app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java +++ b/app/src/main/java/com/example/gsyvideoplayer/utils/JumpUtils.java @@ -32,6 +32,7 @@ import com.example.gsyvideoplayer.ScrollingActivity; import com.example.gsyvideoplayer.WebDetailActivity; import com.example.gsyvideoplayer.WindowActivity; import com.example.gsyvideoplayer.exo.DetailExoListPlayer; +import com.example.gsyvideoplayer.switchplay.SwitchListVideoActivity; /** * Created by shuyu on 2016/11/11. @@ -324,4 +325,10 @@ public class JumpUtils { activity.startActivity(intent); } + + public static void goToSwitch(Activity activity) { + Intent intent = new Intent(activity, SwitchListVideoActivity.class); + activity.startActivity(intent); + } + } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index ccb6e930cacb776115a114780c0a6f7c5a0e93a3..29279113430f3440d6d64e0265009d3029d7665d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -180,6 +180,14 @@ android:text="多任务支持" /> +