在View的背景中画一个半圆

2024-03-02

我正在尝试创建一个背景为半圆的 TextView。我使用 ShapeDrawable 创建一个椭圆形。我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆。但是,ScaleDrawable 没有任何效果。为什么不?在视图背景中绘制半圆的最佳方法是什么?

资源/布局/activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
    <TextView
        android:id="@+id/main_view"
        android:background="@drawable/semicircle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:gravity="center_horizontal"
    />
    </RelativeLayout>

res/drawable/semicircle.xml

<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/circle"
    android:scaleGravity="top|clip_vertical"
    android:scaleHeight="200%"
    android:scaleWidth="100%" >
</scale>

res/drawable/circle.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval"
    <solid
        android:color="#444" />
</shape>

src/.../MainActivity.java

//...
public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        findViewById(R.id.main_view).getBackground().setLevel(10000);
    }
//...

要剪辑椭圆形,只需将其嵌入到 ClipDrawable 中,如下所示:

res/drawable/semicircle.xml

<?xml version="1.0" encoding="utf-8"?>
<clip
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:clipOrientation="vertical"
    android:gravity="bottom">
    <shape android:shape="oval">
        <solid android:color="#444"/>
    </shape>
</clip>

ClipDdrawable http://developer.android.com/reference/android/graphics/drawable/ClipDrawable.html共同目的是创建自定义进度条。当其“level”属性在 [0; 范围内增加时,它会剪辑其内容的一部分并逐渐显示它。 10000](0=隐藏,10000=完全显示)。

  • clipOrientation是剪辑进度的方向。
  • gravity是剪辑进度开始边缘/侧面。

要获得半圆,请设置此ClipDrawable作为您的视图背景,并以编程方式调整其“级别”:

//...
findViewById(R.id.my_view).getBackground().setLevel(5000)
//...

适用于所有 Android 版本(“在 API 级别 1 中添加”)并且不需要自定义视图。

;-)

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

在View的背景中画一个半圆 的相关文章

  • 有关 paddingStart 使用的冲突 lint 消息

    API 17 RTL 支持发布后 我将以下内容添加到我的清单中 android supportsRtl true 这导致 Lint 在我的视图中有 paddingLeft Right 的地方正确地向我发出这些警告 考虑添加 android
  • “此版本中使用了已弃用的 Gradle 功能,使其与 Gradle 7.0 不兼容。” -反应-原生

    当我尝试运行反应本机应用程序时 我遇到此错误react native run android 我无法安装该应用程序 我正在尝试构建一个相机应用程序 我当前的react native版本 0 62 0 React cli版本 2 0 1 De
  • 如何使用gradle这样的格式更改apk名称?

    当我使用 gradle 构建应用程序时 我想将 app release apk 文件名更改为如下所示 format appname of package name V version code yyMMdd R T explain appn
  • 居中复选框视图

    如果除了 或代替 复选框之外 您还对单选按钮感兴趣 请参阅this https stackoverflow com questions 16701806 centering views 2而是提问 尽管存在
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • 在Android内存中存储gif图像

    我对安卓还很陌生 我想将图像保存到内存中 然后从内存中检索图像并将其加载到图像视图中 我已使用以下代码成功将图像存储在内存中 void saveImage String fileName img cnt jpg File file new
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • Android/Java 创建辅助类来创建图表

    Goal 创建用于图形生成的辅助类 背景 我有 3 个片段 每个片段收集一些传感器数据 加速度计 陀螺仪 旋转 并使用 GraphView 绘制图表 以下是其中一个片段的代码 该代码当前工作正常 public class Gyroscope
  • Android相当于javascript的setTimeout和clearTimeout?

    setTimeout 有一个答案https stackoverflow com a 18381353 433570 https stackoverflow com a 18381353 433570 它没有提供我们是否可以像在 JavaSc
  • 仅在 Android 应用程序中使用 XHDPI 可绘制对象?

    如果您计划在不久的将来支持 LDPI MDPI HPDI 或许还有 XHDPI 那么是否可以在项目中仅包含 XHDPI 可绘制对象并让设备将其缩放到所需的分辨率 我已经测试过在 Photoshop 中将可绘制对象的大小调整为 MDPI 和
  • 从 Handler.obtainMessage() 获取什么参数

    我正在使用线程来执行一些 BT 任务 我正在尝试向 UI 线程发送消息 以便我可以基于我的 BT 线程执行 UI 工作 为此 我使用处理程序 但我不知道如何检索发送到处理程序的数据 要发送数据 我使用 handler obtainMessa
  • Proguard - 找不到任何超级类

    我收到此错误 Unexpected error while performing partial evaluation Class org apache log4j chainsaw Main Method
  • Android - 正确使用 invalidateOptionsMenu()

    我一直在寻找很多invalidateOptionsMenu 我知道它的作用 但我想不出这种方法在现实生活中有用的任何例子 我的意思是 例如 假设我们要添加一个新的MenuItem to our ActionBar 我们可以简单地获取菜单on
  • 使用 Glide 库设置图像加载完成后进度条的可见性

    您好 我想要一个图像进度条 该进度条将在图像加载时显示 但当图像加载完成时 我想将其设置为消失 早些时候我为此使用了毕加索库 但我不知道如何将它与 Glide 库一起使用 我知道有一些资源就绪功能 但我不知道如何使用它 谁能帮我 毕加索图书
  • InAppMessage 一旦显示就会自动消失

    您好 我最近将 InAppMessaging 添加到我的项目中 这似乎很容易集成 但对我来说并没有按预期工作 首先 我将其添加到 build gradle 中 implementation com google firebase fireb
  • 如何在 Android 中保存 Edittext 中的文本而不丢失文本的粗体、斜体等功能

    我想做的就是从 Edittext 中获取文本 该文本具有粗体和斜体等功能 并将其保存在文本文件中 但是当我读回并显示它时 这些功能丢失了 它们不显示 如何通过将文本保存在文本文件或任何文件中来保持丰富的功能 您可以使用Html toHtml
  • 为什么 ExpandableListView 更改 ChildView 设置(Android)?

    我对使用 ExpandableListView 有疑问 就我而言 我有两个组视图和两个子视图 而子视图由一个带有多个按钮 文本视图等的相对布局组成 例如 当首先扩展第二组并对视图持有者进行一些更改并随后扩展第一组时 先前所做的更改也会自动应
  • BadPaddingException:无效的密文

    我需要一些帮助 因为这是我第一次编写加密代码 加密代码似乎工作正常 但解密会引发错误 我得到的错误是 de flexiprovider api exceptions BadPaddingException 无效的密文 in the 解密函数
  • 从多个 TextView 中选择文本

    如何在android中从多个文本视图中选择文本 我已经尝试过以下代码 该代码一次仅适用于一个文本视图 我想一次性从许多文本视图中复制文本 android textIsSelectable true 你不能同时这样做 您需要在单个文本视图中设
  • 在DialogFragment中,onCreate应该做什么?

    我目前正在摆弄 DialogFragment 以学习使用它 我假设相比onCreateView onCreate 可以这样做 public void onCreate Bundle savedInstanceState super onCr

随机推荐

  • Android Play Console:当其他轨道中的版本代码较高时,内部测试轨道不可用

    问题中的答案Android Play 控制台 内部测试版本 密切测试 它是如何运作的 https stackoverflow com questions 65728704 android play console internal test
  • 如何根据IP地址控制对BigQuery的访问?

    有没有办法通过 IP 地址控制对 BigQuery 数据集的访问 我假设只有特定服务器或全局 IP 地址可以使用服务帐户密钥访问 BigQuery 数据集 也许 Google 员工会在这里纠正我 但我认为目前不可能对数据集访问进行 IP 过
  • 使用Python的黎曼曲面图[重复]

    这个问题在这里已经有答案了 我有一个复杂的矩阵 看起来像 H w1 complex 0 g1 k k w2 complex 0 g2 正如本文所讨论的paper https www nature com articles s41563 01
  • 为什么我可以从“eval”调用“print”

    对于代码 usr bin python src print import os obj compile src exec eval obj builtins False 我得到输出 Traceback most recent call la
  • 后藤此时却出乎意料——批处理

    我正在尝试制作一个基于批处理文本的游戏 但刚开始写就遇到了以前从未遇到过的问题 menu the game menu opens when the game starts cls echo This game is still being
  • ActiveSupport 中 mattr_accessor 和 cattr_accessor 之间的区别?

    我无法通过查看源代码来弄清楚两者之间的区别cattr and mattr 分别在类和模块中提供的方法 我读过这个问题 Rails 模块中的 mattr accessor 是什么 https stackoverflow com questio
  • 动态选择 WTForms Flask SelectField

    我正在尝试使用 FlaskForms 将 userID 变量传递给 WTForms 首先 我将展示工作正常的代码 然后展示我需要修改的内容 我不知道如何修改的部分 我正在添加与某个组关联的新名称 FlaskForm模型 class AddN
  • 用于解析单个键的正则表达式:Javascript 中的 JSON 值

    我想看看是否可以查找个人keys出于一个JSONJavascript 中的字符串并返回它Value with Regex 有点像建造一个JSON搜索工具 想象一下以下 JSON Name Humpty Age 18 Siblings Dra
  • 如何从c中的字符串数组中访问单个字符?

    只是想了解如何寻址字符串数组中的单个字符 另外 这当然会让我总体上理解指向指针下标的指针 如果我有char a我想到达第二个字符串的第三个字符 这有效吗 a 1 2 看来应该 几乎 但不完全是 正确答案是 a 1 2 因为您需要首先取消对实
  • Netbeans 7 调色板为空?如何恢复呢?

    我在 Kubuntu 12 04 上使用 Netbeans 7 我这样启动 Netbeans netbeans cp a usr share java xercesImpl jar Netbeans 和 Kubuntu 12 04 已知问题
  • 有没有办法使用正则表达式来匹配引号之外的文本模式?

    正如标题中所述 有没有一种方法可以使用正则表达式来匹配出现在引号之外的文本的文本模式 理想情况下 考虑到以下示例 我希望能够匹配引号之外的逗号 而不是引号内的逗号 这是一些文本 后面是 文本 用引号引起来 or 这是一些文本 后面是 文本
  • 内核级别的 Docker 命名空间

    如何区分 docker 容器的 pid 1 17 等与主机的 1 17 等 pid 以及当我们在 docker 容器内创建新进程时发生的所有内核更改是什么 如何在宿主机中看到docker内部的进程 如何区分docker容器的pid 1 17
  • 使用 quosure 作为 by 参数连接数据集

    我正在尝试编写一个自定义函数 该函数将使用 quosures 作为 left join 函数的 by c 部分中的参数来连接两个数据集 这是我当前对该函数的尝试 在 by c left index right index 部分失败 left
  • 如何使用 javascript 替换字符串中所有出现的变量?

    我正在尝试使用 javascript 替换字符串中所有出现的变量 这不起作用 var id 1 var re new RegExp id g var newHtml oldHtml replace re 2 这仅替换第一次出现的 id va
  • 按随机顺序对数组列表进行排序

    我正在编写一个纸牌游戏 我有一个ArrayList持卡 Object 在哪里 他们每个人都有自己的 id 由于我想让这个游戏支持多人模式 我必须以某种方式在两个玩家之间发送 接收游戏进度 现在 如果我在一侧洗牌 我必须在另一侧做同样的事情
  • 使用 Nginx 设置 Laravel

    我正在尝试设置Laravel http laravel com 可使用的 PHP 框架Nginx http wiki nginx org Main 这是我的目录结构 project application laravel public in
  • 获取 Azure AD B2C 策略的 SAML 元数据时出错 - AADB2C90022

    在 Azure AD B2C 中设置自定义策略以连接到 ADFS 身份提供程序 这需要一个 SAML 元数据端点 如下面链接的文档中所指定 https learn microsoft com en us azure active direc
  • 为什么 XHTML 中的


    不同?

    这是 HTML 页面的完整源代码 one br two br three br four 谁能解释为什么当我在 IE8 或 chrome 中查看页面时 三 和 四 之间会出现额外的空行 我认为标准应该让所有浏览器看起来都一样 据我所知 这个
  • 自动将 CSV 文件导入 SQL Server [重复]

    这个问题在这里已经有答案了 我正在尝试将许多不同的 csv 文件导入 SQL Server 2008R2 数据库 文件中的数据以逗号分隔 我对文件格式没有发言权 有些列是文本 并用双引号分隔 就像在 Excel 中一样 这些列包含的文本可能
  • 在View的背景中画一个半圆

    我正在尝试创建一个背景为半圆的 TextView 我使用 ShapeDrawable 创建一个椭圆形 我尝试使用 ScaleDrawable 将椭圆形的垂直尺寸加倍并剪辑它来创建半圆 但是 ScaleDrawable 没有任何效果 为什么不