我已将我的应用程序设计为在全屏模式下工作。没有状态栏和操作栏是可见的。这假设是一个问题,因为每次使用 YoutubeAndroidPlayerAPI 从 youtube 加载视频时,状态栏都会出现。
我的 Activity :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.activity_open_translate,R.anim.activity_close_scale);
this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
if(getActionBar()!=null) {
ActionBar actionBar = getActionBar();
actionBar.hide();
}
setContentView(R.layout.activity_fad_socios);
...
}
...
private void changeFragment(int index) {
switch(index) {
case 0:{
getSupportFragmentManager().beginTransaction().replace(R.id.fragmentContainer, new FADFragment(),"informacion").commit();
break;
}
...
}
我在我的 fragment 中引用 YoutubeAPI 的方式:
fragmentManager = getActivity().getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragment = new YouTubePlayerSupportFragment();
fragmentTransaction.add(R.id.fragmentz, fragment);
fragmentTransaction.commit();
portadaFrag.setVisibility(View.GONE);
if(buttonSelected == 0) {
((FADSociosActivity) getActivity()).playingYoutube=true;
fragment.initialize(getActivity().getResources().getString(R.string.youKEY), new OnInitializedListener(){
@Override
public void onInitializationFailure(Provider arg0, YouTubeInitializationResult arg1) {
Log.e("fail","fail");
}
@Override
public void onInitializationSuccess(Provider arg0, YouTubePlayer arg1, boolean arg2) {
youtubePlayer = arg1;
youtubePlayer.loadVideo("-D-MVgOvvOo");
youtubePlayer.setPlaybackEventListener(new PlaybackEventListener() {
@Override
public void onBuffering(boolean arg0) {
try {
((FADSociosActivity) getActivity()).refreshWindow();
}
catch(Exception e) {}
}
@Override
public void onPaused() {
try {
((FADSociosActivity) getActivity()).playingYoutube=false;
((FADSociosActivity) getActivity()).refreshWindow();
}
catch(Exception e) {}
}
@Override
public void onPlaying() {
try {
youtubePlayButton.setVisibility(View.GONE);
((FADSociosActivity) getActivity()).playingYoutube=true;
((FADSociosActivity) getActivity()).refreshWindow();
}
catch(Exception e) {}
}
@Override
public void onSeekTo(int arg0) {
try {
((FADSociosActivity) getActivity()).refreshWindow();
}
catch(Exception e) {}
}
@Override
public void onStopped() {
try {
youtubePlayButton.setVisibility(View.VISIBLE);
((FADSociosActivity) getActivity()).playingYoutube=false;
((FADSociosActivity) getActivity()).refreshWindow();
}
catch(Exception e) {}
}
});
我在第一个 Activity 中的 refreshWindow 方法:
public void refreshWindow() {
try {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getWindow().getDecorView().findViewById(android.R.id.content).invalidate();
}
catch(Exception e) {
e.printStackTrace();
}
}
使用此方法无法在状态栏稍微倾斜后强制 Activity 再次进入全屏模式。无论如何,每次用户点击视频时, Activity 都会退出全屏模式。 YoutubePlayer-API 似乎覆盖了我的 FLAG_FULLSCREEN,我无法避免这一点。任何人都知道如何克服这个?提前致谢。
最佳答案
好吧,在初始化后设置标志 YouTubePlayer.FULLSCREEN_FLAG_CONTROL_ORIENTATION 似乎可以解决问题 =)
关于Android youtube-api取消Activity中的FLAG_FULLSCREEN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682255/