Панель действий Шерлок не сохраняет прозрачность при смене ориентации с портретной на альбомную

1

Я использую Android Sherlock в одном проекте, где я показываю VideoView. Когда ориентация экрана является портретной, отображается видео и текст. Когда отображается пейзаж, отображается только видео в полноэкранном режиме.

Ну, я сомневаюсь: почему альфа-цвет (панели действий Шерлока) показан, когда ориентация - портрет, но изменяет его альфа-свойство (становится непрозрачным), когда ориентация является ландшафтной?

Мой 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), который позволяет альфа-цвет в панели действий.

Когда меняется ориентация, я вызываю 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 я установил VideoActivity с свойством android: configChanges = "orientation", что позволяет продолжить воспроизведение видео, если ориентация изменилась.

<!-- Video Activity -->
<activity 
    android:name=".VideoActivity" 
    android:label="@string/app_name"
    android:screenOrientation="portrait"
    android:configChanges="orientation"
/>

Поэтому, когда ориентация изменяется, onCreate() не является вызовом.

Я думаю, что происходит то, что requestWindowFeature (Window.FEATURE_ACTION_BAR_OVERLAY) позволяет альфу только в первой ориентации при создании активности (в данном случае, в портрете). Таким образом, ландшафтная ориентация не стала альфа-цветом. Но я не уверен.

Я уверен, что мне нужен альфа-цвет панели действий в обеих ориентациях.

Кто-нибудь знает, возможно ли, чтобы мое видео имело альфа-цвет в обеих ориентациях?

Теги:

1 ответ

0

Я считаю, что ActionBarSherlock нуждается в Android для обработки изменений конфигурации, а не для вашего приложения. Использование андроида: configChanges "взломать" и ActionBarSherlock вместе в одном приложении невозможно.

  • 0
    Итак, как я могу иметь два разных альфа-цвета на панели действий для обеих ориентаций моего видео?
  • 0
    Получите ориентацию устройства в onCreate вашей Деятельности и таким образом динамически установите альфа-цвет вашей панели действий.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню