我正在尝试复制Google地图的底部面板向上滑动动画:
使用TranslationAnimation
,我可以在点击标记时让底部面板动画显示。我遇到的问题是,在动画结束时,我必须将其视图设置为VISIBLE
,以便面板显示,但随后整个面板显示而不仅仅是顶部标题部分。
我目前正在使用包含LinearLayout的FrameLayout作为我的底部面板视图:
<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 :(得分:18)
之前我曾使用过这个库,并且工作得非常好。
文档说明了这个
此代码主要基于开源的SlidingPaneLayout Android支持库的r13中的组件。谢谢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");
}
});
此外,您可以通过视图说明将触发窗格活动。
希望它有所帮助! :)