ListPopupWindow菜单从左到右弹出动画方向

时间:2017-01-01 11:08:57

标签: android android-animation

我有一个ListPopupMenu,代码如下

public void showPopupMenu(View view) {
    ListPopupWindow listPopupWindow = new ListPopupWindow(getActivity());
    listPopupWindow.setAdapter(new CollectionItemMenuAdapter(getActivity(), popupMenuList));
    listPopupWindow.setWidth((int) getResources().getDimension(R.dimen.menu_width));
    listPopupWindow.setHeight(WRAP_CONTENT);
    listPopupWindow.setVerticalOffset((int) getResources().getDimension(R.dimen.menu_vertical_offset));
    listPopupWindow.setHorizontalOffset((int) getResources().getDimension(R.dimen.menu_horizontal_offset));

    listPopupWindow.setAnchorView(view);
    listPopupWindow.show();
}

结果如下,当点击设置时(在gif中,第一个),弹出菜单出现。

enter image description here

但是菜单动画从右到左显示。我希望它从左到右显示(就像从设置按钮出现一样)。如果不为它创建自定义动画,我能实现吗?

p / s:我尝试使用listPopupWindow.setAnimationStyle(...)进行自定义动画,但也无效

2 个答案:

答案 0 :(得分:2)

我是这样做的。

首先,在res / anim文件夹中设置动画

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">
   <scale android:fromXScale="0" android:fromYScale="1"
      android:toXScale="1" android:toYScale="1"
      android:duration="700"
      />
</set>

第二,在res / values / styles.xml中添加样式

<style name="Animation">
    <item name="android:windowEnterAnimation">@anim/animation</item>
</style>

并使用setAnimationStyle。

popupWindow.setAnimationStyle(R.style.Animation);

这是PopupWindow。但我认为它们都是一样的。

祝你好运!!

答案 1 :(得分:1)

显然我的问题主要是由于将错误的观点发送到listPopupWindow.setAnchorView(view);。我需要发送“设置图像”视图而不是“父列表视图”。

通过发送右视图,我现在从右侧源开始动画,即设置图像的点。固定动画如下所示 enter image description here