Подтвердить что ты не робот

Повторное копирование нижней панели Google Maps

Я пытаюсь воспроизвести анимацию нижней панели Google Maps:

  • Нажмите на маркер Карты показывает небольшую часть нижней панели (заголовок)
  • Проведите по панели заголовка панель полного размера с дополнительной информацией.
  • Проведите по экрану на полноразмерной панели только для просмотра только заголовка
  • Отключить маркер, а нижняя панель 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, и нажмите маркер, чтобы скрыть все.

4b9b3361

Ответ 1

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

https://github.com/umano/AndroidSlidingUpPanel

В документации говорится об этом

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

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

У вас есть 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");

            }
        });

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

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