gpt4 book ai didi

android - 如何在android中为弹出窗口制作动画

转载 作者:IT王子 更新时间:2023-10-28 23:58:12 25 4
gpt4 key购买 nike

我的应用程序中有一个弹出窗口,它会在单击某个按钮时出现我想为这个窗口设置淡入淡出动画,我将xml文件放在“res/anim”文件夹中并为弹出窗口设置动画样式但动画不起作用?这是我的代码:

myanim.xml...

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="4000"
android:repeatCount="1"/>
</set>

================================================

创建弹出窗口

private PopupWindow showOptions(Context mcon){
try{
LayoutInflater inflater = (LayoutInflater) mcon.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.options_layout,null);
layout.setAnimation(AnimationUtils.loadAnimation(this, R.anim.myanim));
PopupWindow optionspu = new PopupWindow(layout, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

optionspu.setFocusable(true);
optionspu.showAtLocation(layout, Gravity.TOP, 0, 0);
optionspu.update(0, 0, LayoutParams.WRAP_CONTENT, (int)(hei/5));
optionspu.setAnimationStyle(R.anim.myanim);
return optionspu;
}
catch (Exception e){e.printStackTrace();
return null;}
}

================================================ ==onClick 方法...(optionsPopup 是 PopupWindow 类型的全局变量)

 @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.options:
optionsPopup=showOptions(this);
break;
}

最佳答案

我认为问题在于您只提供了一组动画样式。但实际上一个 PopupWindow 需要两个动画。显示窗口时使用一个,隐藏窗口时使用另一个。

你应该这样做,

1) 创建两组不同的动画。

说,popup_show.xmlpopup_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>

3) 现在将此样式设置为您的 PopupWindow 动画,

 popup.setAnimationStyle(R.style.Animation);

现在它会自动检测窗口进入和退出并提供所需的动画。

关于android - 如何在android中为弹出窗口制作动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9247792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com