Android PopupWindow自定义Java动画
我想从中使用展开/折叠动画显示/隐藏弹出窗口。 我能够通过将动画应用到弹出视图(popupwindow中的一个视图)来使用动画。我现在面临的问题是,当用户触摸popupwindow外部时,popupwindow会自动关闭,并且在关闭弹出窗口之前,我无法显示折叠动画 以下是我编写的代码:Android PopupWindow自定义Java动画,android,animation,android-popupwindow,Android,Animation,Android Popupwindow,我想从中使用展开/折叠动画显示/隐藏弹出窗口。 我能够通过将动画应用到弹出视图(popupwindow中的一个视图)来使用动画。我现在面临的问题是,当用户触摸popupwindow外部时,popupwindow会自动关闭,并且在关闭弹出窗口之前,我无法显示折叠动画 以下是我编写的代码: View popupView = View.inflate(context,R.layout.popuplayout, null); popup = new PopupWindow(popupView,ViewG
View popupView = View.inflate(context,R.layout.popuplayout, null);
popup = new PopupWindow(popupView,ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
popup.setAnimationStyle(0);
popup.setOutsideTouchable(true);
popup.setFocusable(true);
popup.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popup.showAsDropDown(anchor, 0, 0);
popup.setBackgroundDrawable(null);
popupView.post(new Runnable() {
@Override
public void run() {
expand(popupView);
}
});
.
.
.
private void expand(final View v) {
final int targetHeight = ((View)v.getParent()).getHeight();
// Older versions of android (pre API 21) cancel animations for views with a height of 0.
v.getLayoutParams().height = 1;
v.setVisibility(View.VISIBLE);
Animation a = new Animation()
{
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
v.getLayoutParams().height = interpolatedTime == 1
? LayoutParams.MATCH_PARENT
: (int)(targetHeight * interpolatedTime);
v.requestLayout();
}
@Override
public boolean willChangeBounds() {
return true;
}
};
a.setDuration(200);
v.startAnimation(a);
}
我想知道是否有一种方法可以在不使用xml样式关闭触摸外部时弹出窗口之前显示动画,或者使用xml动画实现给定动画。这是您应该做的事情 1) 创建两组不同的动画 比如说,popup\u show.xml和popup\u hide.xml并将其添加到您必须在res文件夹中创建的anim文件夹中 2) 现在在values文件夹中创建一个名为styles.xml的xml,并像这样将这些动画添加到其中
<style name="Animation">
<item name="android:windowEnterAnimation">@anim/popup_show</item>
<item name="android:windowExitAnimation">@anim/popup_hide</item>
</style>
现在,它会自动检测窗口的进入和退出,并提供所需的动画。
根据Andro Selva的说法。我认为它没有用处,因为没有办法在xml动画中实现我的自定义动画。因此,无法创建可以在不缩放的情况下展开/折叠视图的弹出显示和弹出隐藏动画。顺便说一句,谢谢你的回答。这不完全是我想要的,但我得到了这样做的想法:)谢谢
public class PopupWindowCustom extends PopupWindow{
public dismiss(){
View view = getCustomView();
expand(view);
super.dismiss();
}
private expand(View view){
//do some anim
}
}
public class PopupWindowCustom extends PopupWindow{
public dismiss(){
View view = getCustomView();
expand(view);
super.dismiss();
}
private expand(View view){
//do some anim
}
}