setAnimationStyle() 的显式动画,我的选择是什么?

2023-11-21

我想使用 setAnimationStyle() 尝试弹出窗口的不同动画样式,但我很难理解文档。

developer.android.com 上说:“弹出窗口出现和消失时使用的动画样式。设置为 -1 表示默认动画,0 表示无动画,或设置为显式动画的资源标识符。”

它没有给出任何示例,也没有告诉我可用的资源选择。我怀疑最适合我目的的动画将从右侧滑入......这是否作为一个选项存在?我可以从列表中选择这些东西还是我必须以某种方式创建自己的东西?

EDIT:我当前制作弹出窗口的代码是这样的(简化的):

public void completed_dialog()
{
  runOnUiThread(new Runnable()
  {
    public void run()
    {

      View layout = inflater.inflate(R.layout.endofgame, null, false);

      Button b1 = (Button) layout.findViewById(R.id.pu_menu);
      Button b2 = (Button) layout.findViewById(R.id.pu_repeat);
      Button b3 = (Button) layout.findViewById(R.id.pu_next);

      b1.setBackgroundResource(R.drawable.custom_menu_but);
      b2.setBackgroundResource(R.drawable.custom_repeat_but);
      b3.setBackgroundResource(R.drawable.custom_next_but);

      b1.setOnClickListener(menu_button_click_listener);
      b2.setOnClickListener(repeat_button_click_listener);
      b3.setOnClickListener(next_button_click_listener);

      final PopupWindow pw = new PopupWindow(layout, canvas_width, 
                                                       canvas_width /2,  true);

      pw.setAnimationStyle(android.R.style.Animation_Dialog);
      pw.showAtLocation(game_frame_layout, Gravity.CENTER, 0, 0);
    }
  }
}

我现在将以下内容放入文件 res/anim/test.xml 中:

<?xml version="1.0" encoding="utf-8"?>

    <set xmlns:android="http://schemas.android.com/apk/res/android">
            <scale
                    android:fromXScale="0.3" android:toXScale="1.0"
                    android:fromYScale="0.3" android:toYScale="1.0"
                    android:pivotX="0%" android:pivotY="0%"
                    android:duration="@android:integer/config_shortAnimTime"
            />
            <alpha
                    android:interpolator="@android:anim/decelerate_interpolator"
                    android:fromAlpha="0.0" android:toAlpha="1.0"
                    android:duration="@android:integer/config_shortAnimTime"
            />
    </set>

原始代码为 pw.setAnimationStyle(android.R.style.Animation_Dialog);工作正常,只要对话框出现标准动画 - 但如果我用 pw.setAnimationStyle(R.anim.test) 交换该行;没有动画。我不知道为什么。


这是工作示例setAnimationStyle()我这边:

res/anim/in.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/decelerate_interpolator">
    <translate 
        android:fromYDelta="854" 
        android:toYDelta="0"
        android:duration="1000"/>
</set>

res/anim/out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">  
    <translate android:interpolator="@android:anim/decelerate_interpolator"
        android:fromYDelta="0"
        android:toYDelta="854" 
        android:duration="10000"
    />
</set>

布局/main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/layout"
    >
    <Button
        android:id="@+id/btn_show"
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="show"
        />
</RelativeLayout >

布局/popup.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"
    android:background="#cccccc" 
    > 
    <Button 
        android:id="@+id/btn_dismiss"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="dismiss"/>
</LinearLayout>

值/styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="PopupAnimation" parent="android:Animation" mce_bogus="1">      
         <item name="android:windowEnterAnimation">@anim/in</item>  
        <item name="android:windowExitAnimation">@anim/out</item>  
    </style>  
</resources>

值/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, MainActivity!</string>
    <string name="app_name">Popupwindow</string>
</resources>

MainActivity.java :

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    boolean flag =false;
    PopupWindow popupWindow;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        init();
    }
    public void init() {
        Button btn_show = (Button) findViewById(R.id.btn_show);
        LayoutInflater inflater = LayoutInflater.from(this);
        View layout = inflater.inflate(R.layout.popup, null);
        popupWindow =new PopupWindow(layout, LayoutParams.FILL_PARENT,
                LayoutParams.FILL_PARENT);
        Button btn_dismiss = (Button) layout.findViewById(R.id.btn_dismiss);
        btn_dismiss.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                openMenu();
            }
        });
        btn_show.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                openMenu();
            }
        });
    }

    public void btn_showOnClicked() {
        openMenu();
    }

    public void btn_dismissOnClicked() {
        openMenu();
    }

    public void openMenu() {
        if (!flag) {
            popupWindow.setAnimationStyle(R.style.PopupAnimation);
            popupWindow.showAtLocation(findViewById(R.id.btn_show), Gravity.NO_GRAVITY, 0, 0);
            popupWindow.setFocusable(true);
            popupWindow.update();
            flag =true;
        } else {
            popupWindow.dismiss();
            popupWindow.setFocusable(false);
            flag =false;
        }
    }
}

并在您的代码中将动画文件添加为样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="test" parent="android:Animation" mce_bogus="1">      
         <item name="android:windowEnterAnimation">@anim/test</item>  
    </style>  
</resources>

并在代码中:

pw.setAnimationStyle(android.R.style.test);

谢谢,编码愉快!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

setAnimationStyle() 的显式动画,我的选择是什么? 的相关文章

随机推荐

  • 在 C 中转换为 ASCII

    使用微控制器 PIC18F4580 我需要收集数据并将其发送到 SD 卡以供以后分析 它收集的数据的值介于 0 到 1023 或 0x0 到 0x3FF 之间 所以我需要做的是将 1023 转换为以 10 为基数的 ASCII 值字符串 0
  • 使用 AutoIt 发送电子邮件

    如何使用 AutoIt 发送电子邮件 只需要一个干净的示例和解释 其中包含 to from subject message 使用内置代码有两种主要方法 INetMail 或 INetSmtpMail 以下是帮助文件中的简单代码示例 如果您对
  • 从 iOS 应用程序上传文件到 ftp

    我读了SimpleFTP示例但我需要一个比这个文档更好的例子 我在 Google 上搜索了一些其他示例 但我发现的所有网站最终都引用了 Apple 文档 而且我还没有找到任何其他没有引用的内容 有人能帮我吗 谢谢 为 iOS 编写了一个易于
  • Global const string& 对我来说很难闻,它真的安全吗?

    我正在审查一位同事的代码 我发现他在全局范围内定义了几个常量 如下所示 const string SomeConstant This is some constant text 就我个人而言 这对我来说很糟糕 因为该引用指的是我假设是从给定
  • AFNetworking后台文件上传

    我想从我的应用程序将文件上传到我的服务器 当应用程序处于活动状态时 下面的代码运行良好 如果我按主页按钮或打开另一个应用程序 上传就会停止 我激活了后台获取但仍然无法工作 Afnetworking 有后台支持 但我不知道如何在我的代码中实现
  • 将foreignKey小部件添加到django-import-export

    我正在尝试将数据导入到我的模型之一 但它失败了 因为我正在尝试上传foreignKey Id 而不是导入导出创建的迭代数 模型 py from django db import models from import export impor
  • 将数字四舍五入到最接近的 5 的倍数

    有谁知道如何将数字四舍五入到最接近的 5 倍数 我找到了一种算法将其四舍五入到最接近的 10 倍数 但我找不到这个算法 这样就可以做十 个了 double number Math round len 5 10 0 10 0 要四舍五入到最接
  • @login_required Flask 应用程序出现问题

    我创建了一个处理身份验证的蓝图 该蓝图使用 Flask Login 并具有以下内容 以及更多未显示的代码 在蓝图中我有以下内容 from flask ext login import LoginManager from flask ext
  • Qt Creator 5 - 未设置调试器

    我设置了一个编译器微软 Visual C x86 编译器 但现在我有这个错误 编译器 Microsoft Visual C x86 Compiler 无法生成 Qt 版本的代码 警告 没有设置调试器 我想我需要设置调试器 但我不知道将 调试
  • 如何重命名 pandas 数据框的第一列?

    我在互联网上多次遇到这个问题 但除了以下几个之外 答案并不多 无法重命名 pandas DataFrame 中的第一列 我使用以下方法达到了相同的目的 df df rename columns df columns 0 Column1 有没
  • 在Oracle中将时差转换为给定格式

    我如何转换EVENT DATE B EVENT DATE A这是要串连的天数HH MM format 另一种方法 一个查询可以在不同的日子进行 with tt as select numToDsinterval EVENT DATE B E
  • Perl 匹配仅返回“1”。布尔值?为什么?

    这一定是显而易见的 但我只是没有看到它 我有一个包含数千条记录的文档 如下所示 Row 1 DATA 0 37755442 1 DDG00000010 2 FALLS 3 IMAGE 4 Defect 5 3 6 CLOSED 我已经设法将
  • 使用持久通知允许用户返回到正在运行的 Android 应用程序

    我正在开发一个包含大量活动的应用程序 我想创建一个持久通知 或多或少 说 AppName 返回AppName 每当我的后台服务运行时都会出现该通知 创建和处理通知没有问题 现在 用户可以在多个屏幕 活动中的任何一个上 离开应用程序 然后希望
  • Dagger with Hilt 将 ActivityContext 从模块注入适配器中

    我正在使用匕首和刀柄 我想将 ActivityContext 从模块注入到适配器 但我收到此错误 ANTLR Tool version 4 5 3 used for code generation does not match the cu
  • 无法使用内置 BrokerService.stop 调用关闭嵌入式 activeMQ 服务

    我一直在使用嵌入式 activeMQ 服务器配置 配置与说明嵌入式 activeMQ 服务器 侦听器概念的示例非常相似 作为应用程序的一部分 我有一个监视目录的监视线程 我不必终止进程来关闭 activeMQ 服务器 而是引入了对 STOP
  • Android 编码与开关(字符串)

    我正在 eclipse 上开发一个 android 应用程序 当我尝试一些代码时 比如 switch String 它给了我以下错误 Cannot switch on a value of type String for source le
  • 如何在 Android 中向 TextView 添加换行符?

    当我定义一个TextView in xml 如何添加新行 n似乎不起作用
  • Spring Data JPA 中的一对多关系

    我希望在两个实体 消费者和政策 之间建立一对多关系 一个消费者应该有多个保单 这是我想要的 Consumer JSON 对象的示例 id 1 name Peter endpoint 123 456 778 policies id 1 nam
  • StreamWriter 系统突然关闭时在文件末尾写入 NUL 字符

    我正在编写一些测试应用程序 以使用以下命令将一些文本写入文本文件StreamWriter 在执行时WriteLine方法系统突然关闭 重新启动机器后 我发现文件末尾有很多 NUL 字符 我查了很多网站 包括MSDN 都没有找到解决这个问题的
  • setAnimationStyle() 的显式动画,我的选择是什么?

    我想使用 setAnimationStyle 尝试弹出窗口的不同动画样式 但我很难理解文档 developer android com 上说 弹出窗口出现和消失时使用的动画样式 设置为 1 表示默认动画 0 表示无动画 或设置为显式动画的资