<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/poi_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:baselineAligned="false" android:orientation="horizontal"> <RelativeLayout android:id="@+id/poi_list_container" android:layout_width="360dp" android:layout_height="match_parent" android:background="@drawable/bg_list_circular" android:visibility="gone"> <ListView android:id="@+id/poi_list" android:layout_width="match_parent" android:layout_height="match_parent" android:hardwareAccelerated="true" android:scrollbars="none" /> </RelativeLayout> <!-- <RelativeLayout--> <!-- android:layout_width="0dp"--> <!-- android:layout_height="match_parent"--> <!-- android:layout_weight="3">--> <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="match_parent" android:layout_height="match_parent" android:clickable="true" android:focusable="true" android:hardwareAccelerated="true" /> </LinearLayout> 这个是我的布局,可以帮我用属性动画或或布局动画来实现动画效果吗?
时间: 2023-12-05 21:29:06 浏览: 162
Android中的ViewPager视图滑动切换类的入门实例教程
好的,我们可以使用属性动画来实现listview的显示和隐藏动画效果。
首先,添加以下代码到你的java文件中:
```
private ObjectAnimator showAnimator;
private ObjectAnimator hideAnimator;
private RelativeLayout poiListContainer;
private MapView bmapView;
private int poiListContainerWidth;
private int bmapViewMarginLeft;
```
然后,在onCreate方法中初始化这些变量和动画:
```
poiListContainer = findViewById(R.id.poi_list_container);
bmapView = findViewById(R.id.bmapView);
poiListContainerWidth = getResources().getDimensionPixelSize(R.dimen.poi_list_container_width);//如果有的话,可以根据实际的布局文件中的dimens来设置poiListContainerWidth
bmapViewMarginLeft = ((LinearLayout.LayoutParams) bmapView.getLayoutParams()).leftMargin;
showAnimator = ObjectAnimator.ofInt(poiListContainer, "leftMargin", -poiListContainerWidth, 0);
showAnimator.setDuration(300);
hideAnimator = ObjectAnimator.ofInt(poiListContainer, "leftMargin", 0, -poiListContainerWidth);
hideAnimator.setDuration(300);
hideAnimator.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
poiListContainer.setVisibility(View.GONE);
bmapView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
}
});
```
接下来,在你的代码中使用以下代码来显示listview:
```
poiListContainer.setVisibility(View.VISIBLE);
bmapView.setLayoutParams(new LinearLayout.LayoutParams(bmapView.getWidth() - poiListContainerWidth, LinearLayout.LayoutParams.MATCH_PARENT));
showAnimator.start();
```
使用以下代码来隐藏listview:
```
hideAnimator.start();
```
这样,你就可以通过属性动画来实现listview显示和隐藏的动画效果了。
阅读全文