当方向从纵向更改为横向时,操作栏Sherlock不保持透明度

时间:2012-05-29 19:13:10

标签: android

我在一个显示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颜色?

1 个答案:

答案 0 :(得分:0)

我相信ActionBarSherlock需要Android来处理配置更改,而不是你的应用程序。在一个应用程序中一起使用android:configChanges“hack”和ActionBarSherlock是不可能的。