Android 中背景为 AnimationDrawable 的按钮状态

2024-01-19

我在 Android 中制作自定义按钮已经有一段时间了。事情很简单,只需为按钮状态制作图像资源并为其制作一个选择器。一切都很顺利而且美好。现在我遇到了新的情况。 我制作了一个可绘制的动画并将其设置为按钮的背景。

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
  <item android:drawable="@drawable/frame1" android:duration="600" /> 
  <item android:drawable="@drawable/frame2" android:duration="300" /> 
  <item android:drawable="@drawable/frame3" android:duration="500" /> 
</animation-list> 

如果我将动画设置为按钮的背景,它就可以正常工作。如果我尝试制作一个简单的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
        android:state_pressed="false"
        android:drawable="@drawable/animation" />

    <item
        android:state_pressed="true"
        android:drawable="@drawable/pressed" />
  </selector>      

按钮的正常状态将以动画作为背景,而按下状态以静态图像为背景,则事情无法正常工作。

在我的主要活动中,在 onWindowFocus 上我获取按钮背景并开始动画

 @Override
  public void onWindowFocusChanged(boolean hasFocus) {
      super.onWindowFocusChanged(hasFocus);
          btn = (Button)findViewById(R.id.btnAnim);
          btnAnimation = (AnimationDrawable) btnAnim.getBackground();
          btnAnimation.start();
 }

这似乎是问题所在,因为我的动画无法从选择器中正确获取,并且出现以下错误:

03-14 15:21:16.146: ERROR/AndroidRuntime(440): FATAL EXCEPTION: main
03-14 15:21:16.146: ERROR/AndroidRuntime(440): java.lang.ClassCastException: android.graphics.drawable.StateListDrawable
03-14 15:21:16.146: ERROR/AndroidRuntime(440):     at com.bebenjoy.MainActivity.onWindowFocusChanged(MainActivity.java:53)
03-14 15:21:16.146: ERROR/AndroidRuntime(440):     at ...

关于如何解决这个问题有什么想法吗?谢谢。


你的演员阵容不正确——你的背景可绘制是StateListDrawable, not AnimationDrawable。我宁愿做类似的事情:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
  super.onWindowFocusChanged(hasFocus);
  btn = (Button)findViewById(R.id.btnAnim);
  StateListDrawable background = (StateListDrawable) btn.getBackground();
  Drawable current = background.getCurrent();
  if (current instanceof AnimationDrawable) {
      btnAnimation = (AnimationDrawable) current;
      btnAnimation.start();
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 中背景为 AnimationDrawable 的按钮状态 的相关文章

  • Manifest Merger工具:替换失败

    我正在使用一个使用自己的 android theme 的库 因此在构建时收到以下错误 错误 55 9 任务 contacit processDebugManifest 执行失败 清单合并失败 AndroidManifest xml 中的属性
  • Android 上的 SVG 支持

    Android 支持 SVG 吗 有什么例子吗 最完整的答案是这样的 Android 2 x 默认浏览器本身不支持 SVG Android 3 默认浏览器支持 SVG 要将 SVG 支持添加到 2 x 版本的平台 您有两个基本选择 安装功能
  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 安卓定位不准确

    我正在尝试获取当前用户的位置 我试图重构我的代码以获得更好的结果 但我只是不断得到关于准确度的荒谬位置 它在 900 600 米之间 如何才能得到更好的结果 使其精度达到50m以内 这是我的代码 package com agam mapsl
  • ffmpeg视频已压缩但无法在浏览器中播放

    我已经集成了ffmpeg4android lib 视频压缩工作正常 但视频无法在除 safari 浏览器之外的浏览器中播放 上传到服务器后 我使用了以下命令 ffmpeg y i
  • 使用 ADB 命令获取 IMEI 号码 Android 12

    对于 11 之前的 Android 版本 我使用以下命令从我的设备获取 IMEI 号码 adb shell service call iphonesubinfo 4 cut c 52 66 tr d space or adb shell s
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • Android在排序列表时忽略大小写

    我有一个名为路径的列表 我目前正在使用以下代码对字符串进行排序 java util Collections sort path 这工作正常 它对我的 列表进行排序 但是它以不同的方式处理第一个字母的情况 即它用大写字母对列表进行排序 然后用
  • glTexImage2D: 之前出错:( 0x506 内部 0x1908 格式 0x1908 类型 0x1401

    当使用 Android Studio 运行模拟器时 我在模拟器屏幕上看不到任何内容 一切都是黑色的 我得到以下事件日志 模拟器 glTexImage2D 出错了 0x506 内部 0x1908 格式 0x1908 类型 0x1401 我已经
  • 放置在 NavigationDrawer 顶部的片段

    我正在尝试添加一个PreferenceFragment在我的应用程序中 问题是 它自动放置在我的顶部NavigationDrawer public class SetPreferenceActivity extends Activity O
  • 使用 gradlew assembleRelease 从 React Native 创建发布 apk 时出现错误

    我想发布 apk 但我收到错误 文件已存在 mkdir D mobile 它在 d 驱动器中生成名为 mobile 的文件 删除文件后 再次执行 gradlew assembleRelease 创建该文件并抛出错误 任务 app bundl
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 在旋转时从错误的资源文件夹中提取可绘制对象

    在这里拉我的头发 因此 我正在使用一个具有多种类型的可绘制对象的应用程序 并且它们的结构如下 res Portrait resources drawable mdpi drawable hdpi drawable xhdpi Landsca
  • HERE 地图:更改路线已行驶部分的颜色

    导航时可以改变路线的颜色吗 具体来说 我希望路线中已行驶的部分的颜色与即将行驶的部分的颜色不同 现在都是同一个颜色 将 MapRoute 对象的 TravelColor 变量设置为透明对我来说很有效 mapRoute color Resou
  • AS3如何在角色死亡动画结束时转到MainTimeline中的下一帧

    所以我需要知道我的角色 鸟 是否用管道 hitTestObject 在动画结束后播放骰子动画 它需要在主时间轴中转到游戏结束帧 if bird hitTestObject pipe1 bird gotoAndStop 3 frame 3 w
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • Android studio - 如何查找哪个库正在使用危险权限?

    我正在尝试将 apk 上传到 google play 商店 但令我惊讶的是 我正在使用以下权限 Your APK is using permissions that require a privacy policy android perm
  • Android:AsyncTask ProgressDialog 将不会在 ActivityGroup 中打开

    我试图在轮询我的服务器时打开一个进度对话框 该类是一个 ActivityGroup 因为它嵌套在选项卡栏中 为了将视图保持在框架内 需要 ActivityGroup 这是我的 ActivityGroup 类的声明 public class
  • javafx android 中的文本字段和组合框问题

    我在简单的 javafx android 应用程序中遇到问题 问题是我使用 gradle javafxmobile plugin 在 netbeans ide 中构建了非常简单的应用程序 其中包含一些文本字段和组合框 我在 android
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android

随机推荐

  • Angular 2:如何从 JSON 响应渲染 HTML,而不向用户显示标签? [复制]

    这个问题在这里已经有答案了 Edit 对那些只浏览了标题的人进行澄清 我的问题是角2 not 1 我有一个类似这样的组件模板 div post body div 该对象类似于 title Some Title body p The em p
  • 在 Rails 3 中从 application.js 访问 current_user 变量

    我希望从 application js 访问 current user 变量 我将 application js 重命名为 application js erb 以便服务器可以理解我的 ruby 代码 所以我得到了类似的内容 functio
  • 在单行 CSS 中添加 // 作为个人注释样式是一种不好的做法吗?

    我最近开始使用 注释 单行 CSS 代码 我知道我实际上并没有注释掉该行 我只是打破它 我应该使用 但效果是一样的 然后该行终止于 并且以下代码工作正常 我可以删除它 但通常我不喜欢这样做 以防万一我想稍后将其放回去 或者如果我回来查看我一
  • 模糊滤镜在 HTML5 Kinetic.Filters.Blur 中如何工作

    如何在 HTML5 中使用模糊滤镜 我发现这个 Kinetic Filters Blur imageData config 及参数 imageData Object config Object config radius Integer 用
  • 如何解析MultipartFormDataContent

    我正在编写一个 Web API 服务 我想在其中接受一个文件 图像 和一个包含图像关键信息的序列化对象 JSON 图像部分没有问题 但是当我添加包含反序列化对象的字符串内容时 我在尝试确定哪个是哪个并采取相应行动时遇到问题 客户端代码如下所
  • 如何在 pandas 中创建叠加条形图

    在更新我之前的一些代码以使用 pandas DataFrame 时 我遇到了以下问题 这是我的原始代码将创建的参考图 import pandas as pd import matplotlib pyplot as plt a range 1
  • 获取 CGEvent Tap 中按下的修改键

    设置事件点击后 我无法识别在给定 CGEvent 的情况下按下了哪个修饰键 CGEventFlags flagsP flagsP CGEventGetFlags event NSLog flags 0x llX flagsP NSLog s
  • 如何消除 php5 Strict 标准错误?

    将 PHP 升级到 5 4 3 WAMP 服务器 2 2 后 我用 CakePHP 1 3 制作的 Web 应用程序在索引中显示以下错误 严格标准 重新定义类的已定义构造函数 第 63 行 C cake cake libs object p
  • sql查询不打印

    我正在尝试运行动态查询 但由于某些奇怪的原因它没有运行 它甚至没有打印 请任何人告诉我为什么下面的动态查询不打印 DECLARE CLIENTPK NEW AS VARCHAR 50 DECLARE CGNEEPK AS VARCHAR 5
  • 弹簧动态注入,工厂化模式

    延续自依赖注入 延迟注入实践 https stackoverflow com questions 10384473 dependency injection delayed injection praxis 10414747 我有主课 pa
  • 如何在 Maven-3 下使用 MOXy 从 XSD 生成 Java?

    在 Maven 3 下使用 MOXy 从 XSD 生成 Java 的最简单 最好的方法是什么 参考 JAXB 接口有一个很好的 Maven 插件 但它似乎不支持 MOXy 有人有什么具体的可以提供吗 我知道我可以编写 ant 脚本 或者插件
  • 使用动态 SQL ALTER USER 查询预防 SQL 注入

    这是防止动态 sql alter user 查询中的 sql 注入的好方法吗 BEGIN z ident DBMS ASSERT ENQUOTE NAME ident z pass DBMS ASSERT ENQUOTE NAME pass
  • 如何将 jquery ui 小部件嵌入到polymer-dart web 组件中

    我尝试嵌入一个 jquery ui 小部件 例如将日期选择器集成到聚合物飞镖网络组件中 Web 组件的定义如下
  • 带引号的批处理路径

    如何检查路径是否有引号 如果没有则添加它 我知道我可以做这样的事情 set p path My path path 但我在引用时遇到问题 C My folder gt path gt C My folder gt Good 如果用户输入带引
  • GPUImage 色度键滤镜

    我正在尝试使用 GPUImage 框架的色键过滤器 我按照 Filtershowcase 示例进行操作 但显然我错过了一些东西 因为它只显示视频 但没有绿屏抠出效果 这是我对摄像机 滤镜的初始化 camera GPUImageStillCa
  • 检测多 SIM 设备中来电的目标 SimCard

    我读过很多帖子并尝试过很多解决方案 但所有帖子的共同点是它们都已经过时了 至少我找不到适用于较新版本的 Android 的解决方案 Post 1 https stackoverflow com a 21454296 6444297 结果 i
  • 以 DRY 方式扩展 SLICK 表

    我有一个关于 Slick Scala 的有趣问题 我希望你们中的一位好心人能够帮助我 我有几个表 并通过扩展在 SLICK 案例类中 case class A case class B case class C 共享这些共同领域 id St
  • 使用Jquery查找父div的id

    我有一些像这样的html div p Volume p div
  • Rails - 操作电缆上的服务器阻塞

    我有一个在开发中完美运行的 Rails 应用程序 我已部署到服务器 应用程序加载并正确显示其登陆和关于页面 但是 当我使用 Action Cable 访问页面时 服务器会阻塞 从网页发出的最后一个请求与 Action Cable 相关 并且
  • Android 中背景为 AnimationDrawable 的按钮状态

    我在 Android 中制作自定义按钮已经有一段时间了 事情很简单 只需为按钮状态制作图像资源并为其制作一个选择器 一切都很顺利而且美好 现在我遇到了新的情况 我制作了一个可绘制的动画并将其设置为按钮的背景