首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在同一个按钮上使用android:background@drawable和stateListAnimator会导致问题

在同一个按钮上同时使用android:background@drawable和stateListAnimator可能会导致问题。android:background@drawable属性用于设置按钮的背景,而stateListAnimator属性用于设置按钮在不同状态下的动画效果。

问题可能出现在两个属性之间的冲突。当按钮的状态发生变化时,比如按下或释放,stateListAnimator会根据不同的状态切换动画效果,而android:background@drawable属性则会设置按钮的背景图像。如果两个属性的设置不一致,可能会导致按钮在不同状态下的显示效果不符合预期。

为了解决这个问题,可以考虑以下几点:

  1. 检查stateListAnimator的设置:确保stateListAnimator属性中定义的动画效果与按钮的背景图像相匹配。如果动画效果与背景图像不协调,可以尝试调整动画效果或更换背景图像。
  2. 使用适当的背景资源:根据按钮的不同状态,选择合适的背景资源。可以使用不同的drawable资源文件来定义按钮在不同状态下的背景图像,然后在stateList中引用这些资源文件。
  3. 考虑使用其他属性:如果同时使用android:background@drawable和stateListAnimator仍然存在问题,可以尝试使用其他属性来实现相应的效果。比如,可以使用android:backgroundTint属性来设置按钮在不同状态下的背景颜色。

总之,要确保android:background@drawable和stateListAnimator属性的设置相互协调,以获得预期的按钮显示效果。在调试过程中,可以使用Android官方文档或相关开发社区的资源来获取更多关于按钮属性和状态切换的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

仿抖音发布按住拍呼吸效果

上面两个按钮,都是采用属性动画进行控制的,但实现细节稍有不同,左上采用的是StateListAnimator,只需要考虑跟随手指动就可以了;右下是onTouch里面控制动画开启or关闭。...true stateListAnimator = breathAnimator } init{}中给View设置stateListAnimator,需要注意的是isClickable...onTouch()方法中控制动画的开启与关闭 首先依然是定义属性动画,这个StateListAnimator类似的,只不过那里是将两个动画组合在了一起,这里需要拆分开来。...然后onTouch()方法里面开启关闭,onTouch()方法如下: override fun onTouchEvent(event: MotionEvent?)...hl=zh-cn#ViewState https://developer.android.com/reference/android/animation/StateListAnimator?

74810

Android样式的开发:Style篇

举几个例子吧: 每个页面标题栏的标题基本会有一样的字体大小、颜色、对齐方式、内间距、外间距等,这就可以定义成样式; 很多按钮也都使用一致的背景、内间距、文字颜色、文字大小、文字的对齐方式等,这也可以定义成样式...样式的定义 Android的样式一般定义res/values/styles.xml文件中,其中有一个根元素,而具体的每种样式定义则是通过下的子标签...有些按钮,我只想改变文字颜色,但背景想让它透明,这时就可以用点前缀的方式继承以上的样式,代码如下: <!...AppCompat主题默认根据不同版本的系统自动匹配相应的主题,比如在Android 5.0系统,它会继承Material主题。...不过这也导致一个问题,不同版本的系统使用不同主题,就会出现不同的体验。因此,为了统一用户体验,最好还是自定义主题。

1.5K20
  • 一文彻底搞清楚 Material Design

    比如说:一个桌面上,你放了一本书 A,然后 A 又放了一本书 B 。这个时候肯定会有层次感,B 相对于桌面的海拔高度 A 相对于桌面的海拔高度肯定是不一样的。...TranslationZ:动态海拔高度偏移高度,是一个偏移的距离,是用来作动画效果,否则不要使用。 Translation Z 是动态的,当创建一个项目,增加一个按钮,当按下按钮会阴影变大了。...实际 Elevation 并没有变化,而是 Translation Z 属性变化。这是 Android 使用默认的状态列表动画,更改 Z 属性。...Z属性不仅影响着view的阴影效果,还影响着view的绘制顺序,同一个父view内部,Z属性越小,绘制的时机就越早。...海拔高度是两个表面 Z 轴的距离,单位也是使用的 dp,一个子元素的海拔是相对于父元素而言的。 海拔高度分为:静止状态海拔高度动态海拔高度偏移。

    2.9K10

    Android Heroes Reading Notes 5

    布局属性:android:elevation="xxxdp" (4)Tinting(着色)Clipping(裁剪) tinting的使用就是配置tinttintMode就可以了,tint通过修改图像的...(5)列表卡片 RecyclerViewCardView是support-v7包中新添加的组件,使用它们需要引用依赖com.android.support:recyclerview-v7:x.y.z...XML布局文件中使用CardView的时候还需要引入其命名空间xmlns:cardview=http://schemas.android.com/apk/res-auto。...(7)MD动画效果 Ripple效果 水波纹效果有两种:波纹有边界波纹无边界。前者是指波纹被限制控件的边界,后者指波纹不会限制控件边界中,呈圆形发放出去。...5.X中,可以使用动画来作为视图改变的效果,有两种方式来实现该动画:StateListAnimatoranimated-selector。

    92010

    从源码分析 Android Button 点击效果

    Android 点击效果 ? 我们平时开发过程中都可能注意到,我们写的默认的 Button 都是有点击效果的,而且大小也有默认规定的,而 TextView 就没有。就想下面的图片一样。 ? ?...这就是我们这里使用的默认 Button 的风格(不知道怎么找的看看我前面关于属性的文章),看到这里 Button 的最小高度,最小宽度都有了,这就解释了为什么默认的 Button 就那么大了。...这里就不再说了,这里只是教大家从源码分析,借助默认样式,来写出我们的自定义样式。... Android 5.0 后加入了新的属性 stateListAnimator 使 button 有了阴影效果。...具体官方文档:https://developer.android.google.cn/guide/topics/graphics/prop-animation#ViewState https://material.io

    1.1K20

    一篇博客让你了解Material Design的使用

    移动设备是这套设计语言的基础对象,让用户不同的平台、不同尺寸的设备能保持一致的体验。 Material Design强调交互的即时反馈,即对于用户的触控等行为app需要给出即时的反应。...同时Material Design要求应用给用户带入感,让用户使用时是沉浸在当前的应用当中。...防止了点击Position错乱的问题。...attr/colorPrimary是使用了系统的颜色值,当然我们也可以主题中重写。 注意:Toolbar需要使用Appcompat的一套东西。...版本判断会比较麻烦,谷歌很贴心 设计了一个兼容类:ActivityOptionsCompat(v4包中),但是此类低版本上面并没有转场动画效果,只是解决了我们手动去判断版本的问题而已。

    3.3K30

    Android O 行为变更官方指南

    输入导航 随着 Android 应用出现在 Chrome 操作系统和平板电脑等其他大尺寸设备,我们看到,用户 Android 应用中又重新开始使用键盘导航。...要在 OTA 后卸载期间保留值,开发者可以使用密钥/值备份关联旧值新值。 对于安装在运行 Android O 的设备的应用,ANDROID_ID 的值现在将根据应用签署密钥用户确定作用域。... Android O 中,媒体按钮事件的处理有所不同: 界面操作组件中处理媒体按钮未发生变化:前台操作组件处理媒体按钮时仍然优先。...如果前台操作组件不处理媒体按钮,系统会将媒体按钮路由到最近在本地播放音频的应用。确定哪些应用接收媒体按钮事件时,不再考虑活动状态、标志媒体会话的播放状态。...注意: 低于 Android O 的平台版本中,违反这些假设条件可能导致多次定义同一个类、由于类混淆造成堆损坏其他不良影响。

    1.7K20

    线程与更新UI,细谈原理

    其实经过实践会发现,外部存储访问权限还是targetSdkVersion有关,具体可以看这篇Android11适配指南。...Looper.prepare() showToast("我去年买了个表") Looper.loop() } } 3)使用同一个...重新运行,子线程中显示并消失后,点击按钮,不崩溃。 换个手机——三星s9,重新运行,子线程中的Toast没消失之前点击按钮,不崩溃。...根据源码我们也得知Toast的显示隐藏都是通过Handler传递消息的,所以必须要有Handler使用环境,也就是绑定Looper对象,并且通过loop方法开始循环处理消息。...其中的关键就是view被绘制到界面时候的线程(也就是最顶层ViewRootImpl被创建时候的线程)进行UI更新时候的线程是不是同一个线程,如果不是就会报错。

    83720

    使用 Android Studio 进行 Flutter 开发

    使用 Flutter inspector, Android Studio IntelliJ 内置。...下面的介绍文章适用于 Android Studio IntelliJ,更多关于开发者工具的信息, 请参看文档: Android Studio 安装运行开发者工具。...点击工具栏中的 Debug 按钮,或选择 Run > Debug。 底部的 Debugger 窗口显示出堆栈变量信息。 底部的 Console 窗口显示详细的日志输出。...未在屏幕显示的 widget 发生了重载。例如,一个延伸到屏幕外的 ListView,或者未给延伸到屏幕外的列表设置 RepaintBoundary,导致重绘整个列表。...当光标放在 Flutter widget 时,黄色灯泡图标会指示可用的修改, 可以通过点击灯泡进行修改, 或使用键盘快捷键( Linux Windows 使用 Alt+Enter, macOS

    6.3K30

    app抓包Charles安装之爬取微信小程序

    如果IOS 版本10以上,必须在设置->通用->关于本机->证书信任设置中打开对根证书启用完全信任。 Android 如果你的手机是Android系统,可以按照下面的操作进行证书配置。...Android系统中,同样需要设置代理为Charles的代理 设置完毕后,电脑就会出现一个提示窗口,询问是否信任此设备,此时直接点击Allow按钮即可。...接下来,将手机电脑连在同一个局域网下。...https加密的链接显示unknow 此问题遇到的可能性最大,导致的原因很多, 最有可能的原因在于证书的问题,证书未能正确安装,查看手机上是否始终信任证书!!...目前腾讯对微信的权限管的很严,小程序模拟器无法使用是普遍现象 网传另外一种方式,使用TBS爬取微信小程序: https://my.oschina.net/sumiao/blog/1587350?

    2.7K40

    译文 | 怎样用 JRebel for Android

    这种情况导致你的大部分时间都花在如何更快的构建项目,而不是为应用增加更多的价值。 网上有很多教你如何加快Gradle构建速度的教程。...而是安装完一次应用后,通过增量包传递到设备或者模拟器,并且能够应用运行时进行更新。这个想法(热部署)已经JRebel的java开发工具上面使用超过8年的时间。...当你安装完插件后,你需要重启Android Studio,重启之后,你需要提供你的姓名邮箱来得到JRebel for Android的21天免费使用。...这些改动现在都是同一个页面上,每一次按下 Apply change 按钮后,JRebel for Android都会调用Activity.recreate()(https://developer.android.com...为什么我要尝试使用JRebel for Android 下面我列出了最有说服力的理由,来让你使用它。 1、可以快速看到自己代码改动的效果。 2、可以有时间打磨素完美的UI,而不用浪费时间构建

    1.4K40

    windows+安卓调试Hybrid混合应用的实践

    ,点击“安装/更新”按钮即可。...但有部分手机会出现类似如下的错误,导致无法点击“安装/更新”,目前已知的是部分版本的MIUI是会出现这个问题的(红米Note小米Note试过不行,但小米4是没问题的)。 ?...测试连接 我们推荐PC手机同一个局域网内,这样比较好操作,这也意味着如果是台式机,则需要安装无线网卡。...按照以下步骤: PC手机都在同一个局域网内 获取PC的IP地址(如果其有多个IP地址,记得是手机同一个局域网内的IP地址) 设置手机连接wifi时启用 http 代理,其中代理ip就是PC的ip,...PC 使用 chrome 打开 chrome://inspect ,然后打开任意 App 的 webview ,此时就应该能够chrome浏览器看到出现了可调试的入口,点击 "inspect",即可打开调试工具

    1.3K100

    windows+安卓调试Hybrid混合应用的实践

    ,点击“安装/更新”按钮即可。...但有部分手机会出现类似如下的错误,导致无法点击“安装/更新”,目前已知的是部分版本的MIUI是会出现这个问题的(红米Note小米Note试过不行,但小米4是没问题的)。 ?...测试连接 我们推荐PC手机同一个局域网内,这样比较好操作,这也意味着如果是台式机,则需要安装无线网卡。...按照以下步骤: PC手机都在同一个局域网内 获取PC的IP地址(如果其有多个IP地址,记得是手机同一个局域网内的IP地址) 设置手机连接wifi时启用 http 代理,其中代理ip就是PC的ip,...PC 使用 chrome 打开 chrome://inspect ,然后打开任意 App 的 webview ,此时就应该能够chrome浏览器看到出现了可调试的入口,点击 "inspect",即可打开调试工具

    96210

    双管齐下:同时设计 iOS Anroid

    比如如下几条: Android 的 MD 设计需要用到更多的空格来进行布局 MD 中字体大小的变化更加多样 iOS ,字体没那么多大小差异,但是字体重量(Font weight)有更多的变化...最近的项目,我发现遵守 Android 的这些设计规范更加安全,因为大一些的 48px 的按钮两个平台上都表现良好,而且 MD 的规范更加全面,还经常更新。...iOS Android 用近乎相同的方式解决这种问题。首先,动作表单都是出现在屏幕的地步,然后主要内容罩上一层阴影。然而,它们创造不同的深度其他细节方面有着一些不同。...Android 的警告框使用按钮样式,就是我们先前提到过的扁平按钮,你可以 MD 说明文档中找到它们应有的尺寸。动作按钮位于卡片的右半部分。实际,所谓的按钮其实就是一个文本。...使用你的 UI 库,并且开发的早期开发人员做好说明。 ? 总结 同一个设计稿中同时呈现出原生 iOS Android 的感觉也并非一件不可能的任务。

    1.4K50

    真·富文本编辑器的演进之路-【译】破解Span性能之谜

    我们将探索更多关于spans的秘密,以及Android框架如何使用它们。最后,我们将看到我们如何在同一进程或进程之间传递Span,并在此基础,当你决定创建自己的自定义Span时,需要注意那些事项。...Layout以及它的两个子类StaticLayoutDynamicLayout,检查设置文本的Span来计算行高布局边距。...再次调用setText导致不必要的逻辑被触发对象被创建,而视图只需要重新绘制或重新测量即可。...复制粘贴文本的过程是通过ClipboardService来完成的,而ClipboardService使用的是同一个TextUtil.writeToParcel方法。...像这样,当对象进程内或进程间传递时,你可以避免框架的实现被应用到spannable。 通过了解Android如何用spans渲染文本,希望你能在你的应用中有效地使用它。

    1.4K10

    Android真香系列,再也不用数据线就能真机调试啦

    我们平时开发过程中,更倾向于用数据线连接真机调试,有的童鞋可能会说了:我开发都是用模拟器的,确实可以,不过调试过程中,可能遇到各种莫名其妙的问题,别问我为啥知道,都是踩坑过来的。...当然,上面只是我面临的问题,很多童鞋遇到的问题可能是公司数据线不够分配使用,又或者是安装过程中接口松动导致断开安装等等,理由千万条,适合自己的就是最好的,话不多说我们来看看无线连接真机的实现步骤吧!...实现步骤: 1、首先确保需要调试的手机电脑处于同一个局域网,比如连接的都是同一个WiFi。...2、插上数据线,打开手机开发者模式,点击USB调试按钮,使连接上Android studio,如图所示: 3、快捷键win键,搜索cmd,打开dos命令窗口,如图所示: 4、dos命令窗口中输入adb...wifi信息 ,查看ip信息,如图所示: 6、命令行输入: adb connect 192.168.1.123:5566 数字部分替换成自己的,如图所示: 7、连接成功后就可以直接在android

    1K10

    Android技术栈(四)Android Jetpack MVVM 完全实践

    ,Activity/Fragment很容易堆积代码,最终导致Controller混杂了View层业务逻辑(也就是你们所知道的一个Activity三千行) MVC中View层与Model几乎几乎完全没有隔离...这也将导致但你想把某个界面上的元素进行更新时,他牵扯到一堆跟Model层相关的代码,这个问题在你变更Model层的时候同样也会出现,这个问题其实是没有很好的将逻辑分层导致的. 1.2.2 MVP MVP...MVP模式解决了MVC中存在的分层问题,Presenter层被突出强调,实际也就是真正意义实现了的MVC 但是MVP中其实仍然存在一些问题,比如当业务逻辑变得复杂以后,IPresenterIView...,还请指点一二 如果你模块中同时使用kotlinDataBinding是可以的,但是请一定不要使用kapt,除非JB那帮大佬搞定这些奇怪的问题..... 2.3.2 转义字符 熟悉xml的同学可能都知道xml中是非法字符,那么要使用泛型的时候,我们就需要使用xml中的转义字符<>来进行转义 //↓错误,编译时会报错

    3.9K01
    领券