2014-02-17 4 views
13

Я пытаюсь повторить нижнюю панель Карт Google пролистывает анимации:Репликация Google Maps Нижняя панель Размах Up

  1. Нажмите на Картах маркер показывает небольшой, часть нижней панели (заголовок)
  2. Размах вверх на панели заголовка отображается полноразмерная панель с дополнительной информацией.
  3. Размах вниз на полной панели размером восстановлен вид на заголовок только
  4. отпайки маркер, и нижняя панель diasappears

Использование TranslationAnimation, я был в состоянии получить нижнюю панель анимировать вверх при касании на маркере. К проблеме, которую я испытываю, является то, что в конце анимации я должен установить свой вид на VISIBLE, чтобы панель отображалась, но затем отображается полная панель, а не только верхняя часть заголовка.

Я в настоящее время использую FrameLayout, содержащий LinearLayout как мой вид снизу панели:

<FrameLayout 
     android:id="@+id/viewBottomPane" 
     android:layout_width="match_parent" 
     android:visibility="gone" 
     android:background="#000000" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal|bottom"> 
     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 
      <include 
       android:id="@+id/paneHeader" 
       layout="@layout/headerPanel" /> 
      <TextView 
       android:id="@+id/paneFooter" 
       android:text="" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"/> 
      </LinearLayout> 
    </FrameLayout> 

Я хотел бы, чтобы просто показать paneHeader на карте маркером крана, а затем проведите пальцем вверх, чтобы показать полный viewBottomPane, проведите пальцем вниз для отображения paneHeader и нажмите маркер, чтобы скрыть все.

+0

эй, мне нужно построить что-то вроде этого. Не могли бы вы помочь мне с кодом slideUpPanel? или предложите мне сделать это http://stackoverflow.com/questions/33912760/how-to-implement-umano-androidslidinguppanel-lib/33939928?noredirect=1#comment55665681_33939928 –

+0

http://stackoverflow.com/questions/25487861/ android-maps-markers-bounds-at-the-center-of-top-half-of-map-area –

ответ

18

Я раньше использовал эту библиотеку для этой пурпуры и работал очень хорошо.

https://github.com/umano/AndroidSlidingUpPanel

В документации сказано, это

Этот код в значительной степени основывается на раскрытом соерсед SlidingPaneLayout компонента из r13 библиотеки поддержки Android. Спасибо Android команда!

Я пробовал Android 2.3.6, и он отлично работает. Не знаю, нужна ли вам поддержка обратной совместимости, но если вы сделаете это, это будет полезно.

You've получил XML часть

<com.sothree.slidinguppanel.SlidingUpPanelLayout 
    android:id="@+id/sliding_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="bottom"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center" 
     android:text="Main Content" 
     android:textSize="16sp" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center|top" 
     android:text="The Awesome Sliding Up Panel" 
     android:textSize="16sp" /> 
</com.sothree.slidinguppanel.SlidingUpPanelLayout> 

И слушателей на классе

SlidingUpPanelLayout layout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); 
     layout.setShadowDrawable(getResources().getDrawable(R.drawable.above_shadow)); 
     layout.setAnchorPoint(0.3f); 
     layout.setPanelSlideListener(new PanelSlideListener() { 
      @Override 
      public void onPanelSlide(View panel, float slideOffset) { 
       Log.i(TAG, "onPanelSlide, offset " + slideOffset); 
       if (slideOffset < 0.2) { 
        if (getActionBar().isShowing()) { 
         getActionBar().hide(); 
        } 
       } else { 
        if (!getActionBar().isShowing()) { 
         getActionBar().show(); 
        } 
       } 
      } 

      @Override 
      public void onPanelExpanded(View panel) { 
       Log.i(TAG, "onPanelExpanded"); 

      } 

      @Override 
      public void onPanelCollapsed(View panel) { 
       Log.i(TAG, "onPanelCollapsed"); 

      } 

      @Override 
      public void onPanelAnchored(View panel) { 
       Log.i(TAG, "onPanelAnchored"); 

      } 
     }); 

Также можно с точки зрения вызовет панели до события.

Надеюсь, это поможет! :)

+0

Выглядит интересно и полезно. Спасибо, спасибо. – mraviator

+0

@mraviator, конечно, это делает;). Удачи! – axierjhtjz

+0

Похоже, что это будет полезно для моих нужд, спасибо. – mraviator

Смежные вопросы