1

我在一个展示 VideoView 的项目中使用 Android Sherlock。当屏幕方向为纵向时,会显示视频和一些文本。当是横向时,仅显示全屏视频。

好吧,我的疑问是:为什么当方向是纵向时会显示 alpha 颜色(Sherlock 操作栏的),但是当方向是横向时会改变它的 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 颜色?

4

1 回答 1

0

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

于 2012-05-29T20:30:45.050 回答