草庐IT

安卓无界波纹和背景

coder 2023-11-28 原文

可以创建一个 RippleDrawable 来定义一个无限的波纹,同时定义一个背景颜色吗? 我已经尝试了一切,但是当我定义一个形状及其颜色时,波纹不再是无限的。 也在这个页面 https://developer.android.com/reference/android/graphics/drawable/RippleDrawable.html没有关于在形状上添加无限波纹的引用。

我试过这个图层列表,但结果很糟糕

    <layer-list 
        xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <ripple
        android:color="@color/android_l_light_gray">
    </ripple>
</item>

<item>      
    <shape
        android:shape="rectangle">
        <solid android:color="@color/android_l_dark_gray" />
    </shape>    
</item> </layer-list>

这就是我得到的

最佳答案

首先请记住,layer-list 可绘制对象的工作方式类似于 FrameLayout,它会按出现的方式堆叠 item,因此如果您需要让你的涟漪在前面只需将它向下移动

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape
        android:shape="rectangle">
      <solid android:color="@color/android_l_dark_gray"/>
    </shape>
  </item>
  <item>
    <ripple android:color="@color/android_l_light_gray"/>
  </item>
</layer-list>

产生类似的东西

现在您注意到它是如何被其他按钮“截断”的了吗?它实际上被 overdraw 了,这是因为绘制顺序,其他 View 的背景被绘制在最上面,而不是波纹实际上被剪掉了,所以我可以为您的特定布局想出一些解决方案:

一个。去掉 layer-list 可绘制对象,只使用 ripple 作为按钮背景,使用 shapecolor可绘制为您的 ViewGroup 背景,产生:

请注意,由于您的其他背景,您失去了类似网格的效果,但看看 Lollipop 上的其他数字键盘,您会发现它们没有网格分隔符,如果您仍然希望它们使用您的 ViewGroup 来绘制它们。

使用/绘制你的波纹作为前景/覆盖/drawableTop 可绘制,另一个作为背景,但我认为你可能会遇到与以前类似的绘制顺序问题。

本来还有一个想着忘记了,说不定还会像梦一样回来呢¯\_(ツ)_/¯

查看 Calculator from AOSP ,您可能想为您的网格借用 CalculatorPadLayout,或者只是学习他们是如何做的:)

关于安卓无界波纹和背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27047705/

有关安卓无界波纹和背景的更多相关文章

  1. ruby-on-rails - 使用 Sublime Text 3 突出显示 HTML 背景语法中的 ERB? - 2

    所以我在关注Railscast,我注意到在html.erb文件中,ruby代码有一个微弱的背景高亮效果,以区别于其他代码HTML文档。我知道Ryan使用TextMate。我正在使用SublimeText3。我怎样才能达到同样的效果?谢谢! 最佳答案 为SublimeText安装ERB包。假设您安装了SublimeText包管理器*,只需点击cmd+shift+P即可获得命令菜单,然后键入installpackage并选择PackageControl:InstallPackage获取包管理器菜单。在该菜单中,键入ERB并在看到包时选择

  2. ruby-on-rails - 使用 Rmagick 或 ImageMagick 在背景上放置标题 - 2

    我有一张背景图片,我想在其中添加一个文本框。我想弄清楚如何将标题放置在其顶部的正确位置。(我使用标题是因为我需要自动换行功能)。现在,我只能让文本显示在左上角,但我需要能够手动定位它的开始位置。require'RMagick'require'Pry'includeMagicktext="Loremipsumdolorsitamet"img=ImageList.new('template001.jpg')img 最佳答案 这是使用convert的ImageMagick命令行的答案。如果你想在Rmagick中使用这个方法,你必须自己移植

  3. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  4. ruby-on-rails - 在所有页面上使用 Prawn 的背景图像 - 2

    我在View中有这段代码prawn_document(:page_size=>"A4",:top_margin=>80,:bottom_margin=>40,:background=>"public/uploads/1.png")do|pdf|creation_date=Time.now.strftime('%d-%m-%Y')posts=@posts.eachdo|post|pdf.pad(10)dopdf.textpost.titlepdf.textpost.textendendpdf.page_count.timesdo|i|pdf.go_to_page(i+1)pdf.draw

  5. ruby - 256 种颜色,前景和背景 - 2

    这是两个脚本的故事,与previousquestion有关.这两个脚本位于http://gist.github.com/50692.ansi.rb脚本在所有256种背景颜色上显示所有256种颜色。ncurses.rb脚本显示所有256种前景颜色,但背景显示基本的16种颜色,然后似乎循环显示各种属性,如闪烁和反向视频。那么是什么给了?这是ncurses中的错误,它使用带符号的整数来表示颜色对吗?(即'tputcolors'表示256但'tputpairs'表示32767而不是65536)似乎如果是这种情况,颜色对的前半部分会正确显示但后半部分会重复或进入属性作为int包裹。

  6. ruby 电子表格行背景色 - 2

    我正在尝试使用“电子表格”解析Excel电子表格。如何获取每一行的背景颜色? 最佳答案 book=Spreadsheet::Workbook.newsheet=book.create_worksheet:name=>'Name'format=Spreadsheet::Format.new:color=>:blue,:pattern_fg_color=>:yellow,:pattern=>1sheet.row(0).set_format(0,format)#forfirstcellinfirstrow或sheet.row(0).def

  7. css - 如何让我的背景图片只出现在 rails 4 的一页上? - 2

    我有一张背景图片,我无法只停留在一页上。我制作了一个带有一个主视图的欢迎Controller来显示它。我也在预编译我的Assets。背景显示得很好,但我的目标是只在我的home.html.erbView中显示背景图像。欢迎/home.html.erb:"lang="">title欢迎Controller:classWelcomeController样式表/welcome.css.scss:body{background:{image:asset-url("image.jpg");}}我的应用程序布局中有以下内容:在config/initializers/assets.rb中:Rails

  8. ruby - cucumber :何时使用标签/ Hook 与背景 - 2

    我想知道与使用标签和Hook相比,是否有支持或反对在cucumber中使用背景的好理由。在测试开始之前有一个登录用户可以是这样的:Background:GiventhatIamloggedinScenario:Loremipsumsitametdolor[...]或者像这样:@loginScenario:Loremipsumsitametdolor[...]+before(@login)dovisit('/admin/login/testuser')end知道什么时候该优先考虑另一个吗? 最佳答案 Background在您为场景提供

  9. ruby - RMagick 从图像中删除白色背景并使其透明 - 2

    我需要从此图像中删除白色背景并使背景透明。所以它只是导出为png的透明背景上的黑色勾号。例如转动进入有什么想法吗? 最佳答案 convertimage.png-matte-fillnone-fuzz1%-opaquewhiteresult.png用透明替换任何白色。模糊选项包括几乎是白色的任何东西。 关于ruby-RMagick从图像中删除白色背景并使其透明,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

  10. (一)专题介绍:移动端安卓手机改造成linux服务器&linux服务器中安装软件、部署前后端分离项目实战 - 2

    快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目

随机推荐