我在一个显示VideoView的项目中使用Android Sherlock。当屏幕方向为纵向时,将显示视频和一些文本。如果是横向,则仅显示全屏视频。
嗯,我的疑问是:为什么当方向是纵向时显示alpha颜色(Sherlock Action Bar),但是当方向是横向时,它会改变它的alpha属性(因为不透明)?
我的onCreate()如下所示:
public void onCreate(Bundle savedInstanceState) {
// Makes action bar become translucent, and sets layout of this activity.
requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_video);
}
好吧,我正在使用 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY),它允许操作栏中的alpha颜色。
当方向改变时,我调用onConfigurationChanged(),它调用setScreenLayout()。此方法设置视频大小并更改操作栏背景颜色。
/**
* Sets the screen layout, according with the current orientation.
*
* @param isInLandscapeMode
*/
public void setScreenLayout(Boolean isInLandscapeMode) {
// If orientation is landscape.
if (isInLandscapeMode) {
// Hides text of the layout.
mTextScrollView.setVisibility(View.GONE);
// Set the size of the video.
setVideoDimensions((int)Math.floor(mWindowWidth * (1 / WIDESCREEN_RATIO)), mWindowWidth);
// Sets window to full screen.
setWindowToFullScreen();
// Sets action bar background color.
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.color.bg_translucent_black));
}
// If orientation is portrait.
else {
// Shows text of the layout.
mTextScrollView.setVisibility(View.VISIBLE);
// Set the size of the video.
setVideoDimensions(mWindowWidth, (int)Math.floor(mWindowWidth * WIDESCREEN_RATIO));
// Sets window to normal screen.
setWindowToNormalScreen();
// Sets action bar background color.
getSupportActionBar().setBackgroundDrawable(getResources().getDrawable(R.color.bg_translucent_black));
}
}
此颜色在res / colors.xml中设置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="bg_translucent_black">#11EEEEEE</color>
</resources>
在我的AndroidManifest.xml中,我使用 android:configChanges =“orientation”属性设置了VideoActivity,如果方向已更改,则允许视频继续播放。
<!-- Video Activity -->
<activity
android:name=".VideoActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:configChanges="orientation"
/>
因此,当方向改变时,onCreate()不会被调用。
我认为发生的事情是 requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY)仅在创建活动时以第一个方向允许alpha(在本例中为纵向)。这样,横向不会变成alpha颜色。但我不确定。
我确信我需要两个方向的动作栏的alpha颜色。
有人知道我的视频是否可以在两个方向都有alpha颜色?
答案 0 :(得分:0)
我相信ActionBarSherlock需要Android来处理配置更改,而不是你的应用程序。在一个应用程序中一起使用android:configChanges“hack”和ActionBarSherlock是不可能的。