提交 e168cf64 编写于 作者: S shuyu

增加了ListVideoUtil下的屏幕旋转的支持

上级 added456
......@@ -18,7 +18,6 @@
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
......@@ -29,19 +28,21 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".PlayActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />
<activity
android:name=".ListVideoActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />
<activity
android:name=".ListVideo2Activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Translucent" />
</application>
</manifest>
\ No newline at end of file
package com.example.gsyvideoplayer;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.transition.Explode;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import com.example.gsyvideoplayer.adapter.ListVideoAdapter;
import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.utils.ListVideoUtil;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
import butterknife.BindView;
import butterknife.ButterKnife;
public class ListVideo2Activity extends AppCompatActivity {
@BindView(R.id.video_list)
ListView videoList;
@BindView(R.id.video_full_container)
FrameLayout videoFullContainer;
@BindView(R.id.activity_list_video)
RelativeLayout activityListVideo;
ListVideoUtil listVideoUtil;
ListVideoAdapter listVideoAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置一个exit transition
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
getWindow().setEnterTransition(new Explode());
getWindow().setExitTransition(new Explode());
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list_video2);
ButterKnife.bind(this);
listVideoUtil = new ListVideoUtil(this);
listVideoUtil.setFullViewContainer(videoFullContainer);
listVideoAdapter = new ListVideoAdapter(this, listVideoUtil);
listVideoAdapter.setRootView(activityListVideo);
videoList.setAdapter(listVideoAdapter);
}
@Override
public void onBackPressed() {
if (listVideoUtil.backFromFull()) {
return;
}
super.onBackPressed();
}
@Override
protected void onDestroy() {
super.onDestroy();
listVideoUtil.releaseVideoPlayer();
GSYVideoPlayer.releaseAllVideos();
}
}
......@@ -5,14 +5,11 @@ import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.transition.Explode;
import android.view.Window;
import android.widget.FrameLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import com.example.gsyvideoplayer.adapter.ListNormalAdapter;
import com.example.gsyvideoplayer.adapter.ListVideoAdapter;
import com.shuyu.gsyvideoplayer.GSYVideoPlayer;
import com.shuyu.gsyvideoplayer.utils.ListVideoUtil;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
import butterknife.BindView;
......@@ -25,9 +22,6 @@ public class ListVideoActivity extends AppCompatActivity {
@BindView(R.id.activity_list_video)
RelativeLayout activityListVideo;
//ListVideoAdapter listVideoAdapter;
ListVideoUtil listVideoUtil;
@Override
protected void onCreate(Bundle savedInstanceState) {
// 设置一个exit transition
......@@ -40,11 +34,6 @@ public class ListVideoActivity extends AppCompatActivity {
setContentView(R.layout.activity_list_video);
ButterKnife.bind(this);
listVideoUtil = new ListVideoUtil(this);
//listVideoAdapter = new ListVideoAdapter(this, listVideoUtil);
//listVideoAdapter.setRootView(activityListVideo);
ListNormalAdapter listNormalAdapter = new ListNormalAdapter(this);
videoList.setAdapter(listNormalAdapter);
......@@ -61,7 +50,6 @@ public class ListVideoActivity extends AppCompatActivity {
@Override
protected void onDestroy() {
super.onDestroy();
listVideoUtil.releaseVideoPlayer();
GSYVideoPlayer.releaseAllVideos();
}
}
......@@ -24,7 +24,7 @@ public class MainActivity extends AppCompatActivity {
ButterKnife.bind(this);
}
@OnClick({R.id.open_btn, R.id.list_btn})
@OnClick({R.id.open_btn, R.id.list_btn, R.id.list_btn_2})
public void onClick(View view) {
switch (view.getId()) {
case R.id.open_btn:
......@@ -33,6 +33,9 @@ public class MainActivity extends AppCompatActivity {
case R.id.list_btn:
JumpUtils.goToVideoPlayer(this);
break;
case R.id.list_btn_2:
JumpUtils.goToVideoPlayer2(this);
break;
}
}
}
......@@ -66,7 +66,7 @@ public class PlayActivity extends AppCompatActivity {
orientationUtils = new OrientationUtils(this, videoPlayer);
//设置全屏按键功能
videoPlayer.getmFullscreenButton().setOnClickListener(new View.OnClickListener() {
videoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
orientationUtils.resolveByClick();
......@@ -106,7 +106,7 @@ public class PlayActivity extends AppCompatActivity {
public void onBackPressed() {
//先返回正常状态
if (orientationUtils.getScreenType() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
videoPlayer.getmFullscreenButton().performClick();
videoPlayer.getFullscreenButton().performClick();
return;
}
//释放所有
......
......@@ -81,7 +81,7 @@ public class ListNormalAdapter extends BaseAdapter {
holder.gsyVideoPlayer.getBackButton().setVisibility(View.GONE);
//设置全屏按键功能
holder.gsyVideoPlayer.getmFullscreenButton().setOnClickListener(new View.OnClickListener() {
holder.gsyVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resolveFullBtn(holder.gsyVideoPlayer);
......
......@@ -7,6 +7,7 @@ import android.support.v4.app.ActivityOptionsCompat;
import android.support.v4.util.Pair;
import android.view.View;
import com.example.gsyvideoplayer.ListVideo2Activity;
import com.example.gsyvideoplayer.ListVideoActivity;
import com.example.gsyvideoplayer.PlayActivity;
import com.example.gsyvideoplayer.R;
......@@ -47,4 +48,15 @@ public class JumpUtils {
ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(activity);
ActivityCompat.startActivity(activity, intent, activityOptions.toBundle());
}
/**
* 跳转到视频列表2
*
* @param activity
*/
public static void goToVideoPlayer2(Activity activity) {
Intent intent = new Intent(activity, ListVideo2Activity.class);
ActivityOptionsCompat activityOptions = ActivityOptionsCompat.makeSceneTransitionAnimation(activity);
ActivityCompat.startActivity(activity, intent, activityOptions.toBundle());
}
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_list_video"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/video_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout
android:id="@+id/video_full_container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
......@@ -24,4 +24,11 @@
android:layout_marginTop="20dp"
android:text="List Video" />
<Button
android:id="@+id/list_btn_2"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="List Video2" />
</LinearLayout>
......@@ -897,8 +897,8 @@ public abstract class GSYVideoPlayer extends FrameLayout implements View.OnClick
gsyVideoPlayer.setStateAndUi(mCurrentState);
gsyVideoPlayer.addTextureView();
gsyVideoPlayer.setRotation(90);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getmFullscreenButton().setOnClickListener(new OnClickListener() {
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
clearFullscreenLayout();
......@@ -988,7 +988,7 @@ public abstract class GSYVideoPlayer extends FrameLayout implements View.OnClick
/**
* 获取全屏按键
*/
public ImageView getmFullscreenButton() {
public ImageView getFullscreenButton() {
return mFullscreenButton;
}
......
package com.shuyu.gsyvideoplayer.utils;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.os.Handler;
import android.transition.TransitionManager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.shuyu.gsyvideoplayer.R;
import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
/**
......@@ -13,34 +19,31 @@ import com.shuyu.gsyvideoplayer.video.StandardGSYVideoPlayer;
public class ListVideoUtil {
private static ListVideoUtil listVideoUtil;
public static synchronized ListVideoUtil getInstance(Context context) {
if (listVideoUtil == null) {
listVideoUtil = new ListVideoUtil(context);
}
return listVideoUtil;
}
private int playPosition = -1; // 播放的位置
private String TAG = "NULL"; //播放的标志
private StandardGSYVideoPlayer gsyVideoPlayer;
private ViewGroup fullViewContainer;
private ViewGroup listParent;
private OrientationUtils orientationUtils;
private Context context;
private boolean isFull;
public ListVideoUtil(Context context) {
gsyVideoPlayer = new StandardGSYVideoPlayer(context);
this.context = context;
}
public void addVideoPlayer(Context context, final int position, int imgId, String tag,
ViewGroup container, View playBtn) {
container.removeAllViews();
if (isCurrentViewPlaying(position, tag)) {
ViewGroup viewGroup = (ViewGroup) gsyVideoPlayer.getParent();
if (viewGroup != null)
viewGroup.removeAllViews();
container.addView(gsyVideoPlayer);
playBtn.setVisibility(View.INVISIBLE);
if (!isFull) {
ViewGroup viewGroup = (ViewGroup) gsyVideoPlayer.getParent();
if (viewGroup != null)
viewGroup.removeAllViews();
container.addView(gsyVideoPlayer);
playBtn.setVisibility(View.INVISIBLE);
}
} else {
playBtn.setVisibility(View.VISIBLE);
container.removeAllViews(); //增加封面
......@@ -68,10 +71,10 @@ public class ListVideoUtil {
gsyVideoPlayer.getBackButton().setVisibility(View.GONE);
//设置全屏按键功能
gsyVideoPlayer.getmFullscreenButton().setOnClickListener(new View.OnClickListener() {
gsyVideoPlayer.getFullscreenButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//resolveFullBtn(holder.standardGSYVideoPlayer);
resolveFullBtn();
}
});
......@@ -79,6 +82,65 @@ public class ListVideoUtil {
}
public void resolveFullBtn() {
if (fullViewContainer == null) {
return;
}
if (!isFull) {
resolveToFull();
} else {
resolveToNormal();
}
}
private void resolveToFull() {
isFull = true;
ViewGroup viewGroup = (ViewGroup) gsyVideoPlayer.getParent();
if (viewGroup != null) {
listParent = viewGroup;
viewGroup.removeView(gsyVideoPlayer);
}
fullViewContainer.setBackgroundColor(Color.BLACK);
fullViewContainer.addView(gsyVideoPlayer);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getBackButton().setVisibility(View.VISIBLE);
//设置旋转
orientationUtils = new OrientationUtils((Activity) context, gsyVideoPlayer);
gsyVideoPlayer.getBackButton().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resolveToNormal();
}
});
}
private void resolveToNormal() {
int delay = orientationUtils.backToProtVideo();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
isFull = false;
fullViewContainer.removeAllViews();
orientationUtils.setEnable(false);
fullViewContainer.setBackgroundColor(Color.TRANSPARENT);
listParent.addView(gsyVideoPlayer);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getBackButton().setVisibility(View.GONE);
}
}, delay);
}
public boolean backFromFull() {
boolean isFull = false;
if (fullViewContainer.getChildCount() > 0) {
isFull = true;
resolveToNormal();
}
return isFull;
}
public void releaseVideoPlayer() {
ViewGroup viewGroup = (ViewGroup) gsyVideoPlayer.getParent();
if (viewGroup != null)
......@@ -95,4 +157,8 @@ public class ListVideoUtil {
private boolean isCurrentViewPlaying(int position, String tag) {
return isPlayView(position, tag);
}
public void setFullViewContainer(ViewGroup fullViewContainer) {
this.fullViewContainer = fullViewContainer;
}
}
......@@ -54,7 +54,7 @@ public class OrientationUtils {
if (mIsLand > 0) {
screenType = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
mIsLand = 0;
mClick = false;
}
......@@ -74,7 +74,7 @@ public class OrientationUtils {
if (!(mIsLand == 1)) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
mIsLand = 1;
mClick = false;
}
......@@ -93,7 +93,7 @@ public class OrientationUtils {
} else if (!(mIsLand == 2)) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
mIsLand = 2;
mClick = false;
}
......@@ -108,13 +108,13 @@ public class OrientationUtils {
if (mIsLand == 0) {
screenType = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_shrink);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_shrink);
mIsLand = 1;
mClickLand = false;
} else {
screenType = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
gsyVideoPlayer.getmFullscreenButton().setImageResource(R.drawable.video_enlarge);
gsyVideoPlayer.getFullscreenButton().setImageResource(R.drawable.video_enlarge);
mIsLand = 0;
mClickPort = false;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册