Как сделать вспомогательный вид поверх существующего действия в Android? - PullRequest
1 голос
/ 03 июня 2010

Я пишу приложение, которое позволяет пользователю получить доступ к своей корпоративной системе голосовой почты. голосовые сообщения отображаются в виде списка, а при выборе одного из них им предоставляется меню. когда пользователь выбирает «прослушать», я бы хотел, чтобы небольшой медиаплеер всплывал в нижней части экрана поверх существующего ListView (аналогично тому, как программная клавиатура появляется при необходимости, а затем уходит, когда все готово). 1001 *

варианты?

1 Ответ

4 голосов
/ 03 июня 2010

Добавьте все ваши представления (т.е. ваш ListView) в RelativeLayout, поместите элементы макета ваших медиаплееров внизу и установите, чтобы их видимость исчезла.

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >

  <ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    />

  <RelativeLayout
    android:id="@+id/mediaPopup"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" 
    android:visibility="gone"
    >
    <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:text="I am a media player!"
      />
  </RelativeLayout>

</RelativeLayout>

Тогда в вашем классе деятельности вы можете анимировать на свой взгляд, как это:

function void showMediaPlayer() {

  if(mMediaPopUp.getVisibility() == View.GONE) {

    // Show Media Player
    TranslateAnimation mAnimUp = 
      new TranslateAnimation(
        Animation.RELATIVE_TO_SELF, 
        0, 
        Animation.RELATIVE_TO_SELF, 
        0, 
        Animation.RELATIVE_TO_SELF, 
        -(mMediaPopUp.getHeight()), 
        Animation.RELATIVE_TO_SELF, 
        0);

    mAnimUp.setStartOffset(500);
    mAnimUp.setDuration(500);

    mMediaPopUp.setVisibility(View.VISIBLE);
    mMediaPopUp.setAnimation(mAnimUp);

  }
}
...