android自定义圆环控件 滑动选择百分比

2023-10-31

  之前做了一个聊天应用,其中需要一个圆环控件,滑动可以选择百分比。看效果图。


  这个自定义view可以分几步完成。画绿色圆环;画灰色圆环;画三角形;画百分比。其中三角形围绕环形旋转,采用Path类实现,首先画出基本的三角形路径,而后适当计算一下,利用matrix变换得到实际要绘制的路径,直接绘制即可。

另外要实现手势对圆环的控制,可以重写onTouchEvent方法,由点击或滑动的坐标计算得到百分比,然后重新绘图。

顺便尝试一下android studio,虽然目前还是0.8.14版本,而且不支持NDK,但毕竟是专业于android开发,不考虑这些缺点,其它很多细节方面都是很不错的,比较看好android studio。

下面是自定义的View。

package com.example.hanwen.myapplication;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;


public class MyView extends View {

    private int color_start;
    private int color_end;

    private float circleDimensionRate = 0.1f;//圆环比例
    private float triangleDimensionRate = 0.1f;//三角形比例

    private float s;//三角形边长
    private float strokeWidth;//圆环宽度
    p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android自定义圆环控件 滑动选择百分比 的相关文章

  • PhoneGap/Cordova 应用程序通知

    我是 PhoneGap Cordova 的新手 我希望向我的应用程序添加一些通知 推送通知 因此当应用程序上发布新文章时 它会提醒用户 本地通知 在设定的时间间隔 日期和时间 我可以提示用户我的应用程序上的最新文章 我进行了大量搜索 但找不
  • 房间数据库更改未触发观察者

    当房间数据库更改时 我试图更新 RecyclerView 但是 当数据库发生更改时 不会调用 MainActivity 中定义的观察者的 onChanged 方法 如果我让 DAO 返回 LiveData 而不是 List 并在 ViewM
  • 将数据从服务传递到活动

    我有自行运行的服务 服务自动启动 我有活动 在此 Activity 按钮中启动该方法DoIt Button setOnClickListener new OnClickListener public void onClick View v
  • socket.io xhr 在连接缓慢时出现错误(3G 移动网络)

    当我在 3G 移动网络 互联网连接速度慢 上测试我的真实聊天应用程序时 Socket io反复断开然后重新连接 我已经记录了原因 它说 xhr post error 这提高了 transport error 然后断开连接 我可以知道什么意思
  • 在 gradle 中,我应该排除分支下的所有依赖项还是只排除根就足够了?

    我已将以下自定义任务添加到我的build gradlefile 为了打印出依赖项的依赖项 This part is useful for finding conflict resolution s between dependencies
  • 如何通过我的活动在 Android 中设置铃声?

    我正在尝试找到一种方法来通过 Android 活动中的代码设置新的默认铃声 我已经将铃声下载到bytearray 最后 我设法将默认铃声设置为我下载的铃声 下面不包含下载代码 仅包含将其设置为默认铃声所需的代码 File k new Fil
  • 改造中的多个队列导致内存不足错误?

    我正在使用retrofit2 做我的项目 当我的呼叫失败时 我再次重复相同的呼叫 重复此 呼叫使我的应用程序强制关闭 当我查看日志时 我得到了错误日志 如下所示 我觉得这是由于同一呼叫的多次排队造成的 所以我在排队之前就这样做了 我打电话给
  • Android上如何获取ImageView的Drawable的矩形?

    我想要获取将包裹 ImageView 的 Drawable 的矩形对象 而不是包裹 ImageView 的矩形 我将使用该矩形在 Drawable 周围绘制一些奇特的矩形 我怎样才能得到那个矩形 Rect rect new Rect Ima
  • 将 java 中的 byte[] 转换为 C++ 中的 unsigned char* 的正确方法,反之亦然?

    我是 C 和 JNI 的新手 我尝试找到一种正确的方法 通过使用 JNI 将 java 中的 byte 转换为 C 中的 unsigned char 反之亦然 我正在安卓上工作 在谷歌和SO中寻找解决方案后 我还没有找到将java中的byt
  • Android -room 持久库 - DAO 调用是异步的,因此如何获取回调?

    从我读到的Room 不允许您在主线程上发出数据库查询 因为可能会导致主线程延迟 所以想象一下我正在尝试更新 UI 主线程上的文本视图 其中一些数据我将如何得到回调 让我给你举个例子 想象一下 我想将我的业务模型数据存储到一个名为 事件 的对
  • 选项卡主机内的 Android Fragment 视图状态 [重复]

    这个问题在这里已经有答案了 可能的重复 使用 Fragment 为 Android 中的每个选项卡单独的返回堆栈 https stackoverflow com questions 6987334 separate back stack f
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • Android NDK 代码中的 SIGILL

    我在市场上有一个 NDK 应用程序 并获得了有关以下内容的本机崩溃报告 SIGILL信号 我使用 Google Breakpad 生成本机崩溃报告 以下是详细信息 我的应用程序是为armeabi v7a with霓虹灯支持 它在 NVIDI
  • 哪个视图最亮?

    在Android中 哪个是轻量级视图 例如 View Textview Edittext 等 在某些情况下 我们需要使用视图来填充区域而不向用户显示视图 同时屏幕加载速度应该很快 您可以使用空间 android widget Space S
  • Android:GestureDetector 无法与选项卡(TabActivity、Tabwidget)一起工作(gestureDetector.onTouchEvent(event) 始终为 false)

    我已经用不同的子活动实现了 TabActivity intent new Intent setClass this MyChildTabActiviy class Initialize a TabSpec for each tab and
  • onTaskRemoved() 在华为和小米设备中没有被调用

    我一直在使用onTaskRemoved 服务中的方法 用于检测应用程序何时通过滑动从设备最近列表中删除 我执行一些日志记录和发生这种情况时需要执行的一些其他操作 它工作完美 然后我在运行Android 6 0的华为设备上检查了这个方法 该方
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • 禁用 Android 菜单组

    我尝试使用以下代码禁用菜单组 但它不起作用 菜单项仍然启用 你能告诉我出了什么问题吗 资源 菜单 menu xml menu menu
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐

  • Element-UI

    Element UI 组件 Tree 树形控件 用清晰的层级结构展示信息 可展开或折叠
  • 学习vue3系列computed

    响应式API中 computed 和之前的 computed 选项用法类似 对于任何复杂逻辑 我们都可能使用计算属性 比如翻转字符串
  • windows下secureCRT远程连接Linux错误

    描述 The server has disconnected with an error Server message reads A protocol error occurred The connection is closed by
  • MIPI D-PHY的初始化(MIPI Alliance & Xilinx)

    DPHY的基本介绍及使用已有很多文章 基本是基于 MIPI Alliance Specification for D PHY 的内容 学习时也以此为准 可参考CSDN上的文章 着重讲述MIPI D PHY的初始化部分 1 D PHY的功能及
  • 服务器2012系统磁盘压缩,windows10 部分文件夹自动勾选了“压缩内容以便节省磁盘空间”...

    您好 根据您的描述 在重启前能够正常取消压缩 但在重启后文件再次被压缩 说明系统功能和组件正常 很可能是某个应用影响了系统导致这个问题 请您仔细回忆下 您是在安装或更新了什么应用后出现该问题的 或使用了空间优化应用 请尝试将其关闭后 查看能
  • 基于Sqli-Labs靶场的SQL注入-54~65关

    目录 Less54 十步以内获取密钥 爆破数据库名 爆破表名 爆破列名 爆破字段值 Less55 十四步以内获取密钥 爆破数据库名 爆破表名 爆破列名 爆破字段值 Less56 十四步以内获取密钥 Less57 十四步以内获取密钥 Less
  • Linux Ubuntu下运行startx后的恢复办法

    解决办法 Alt Ctrl F3 进入控制台界面 提示登录时 输入你的Ubuntu用户名后回车 有密码的话 再输入密码 登录成功 cd 进入你的用户目录 rm rf Xauth 删除 Xauthority文件 Alt Ctrl F7 返回到
  • ROBO Pro的机械臂编程过程

    ROBO Pro是一种用于控制机械臂的软件 它可以使用图形化或文本化的编程方式 机械臂编程的过程大致如下 连接机械臂和电脑 打开ROBO Pro软件 选择合适的模板或创建新的项目 设计编程逻辑 可以使用拖拽或输入代码的方式 调试和运行程序
  • Java基础之static关键字

    目录 静态的特点 第一章 静态代码块 第二章 静态属性 第三章 静态方法 调用静态方法时 静态方法中调用非静态方法时 第四章 static关键字与其他关键字 友情提醒 先看文章目录 大致了解文章知识点结构 点击文章目录可直接跳转到文章指定位
  • GitHub仓库push报错remote: Support for password authentication was removed on August 13, 2021.

    发现GitHub项目从2021年8月13日开始已经不能使用用户名和密码push代码了 搜索了下 有以下两种方法可以尝试 记录一下 ssh 方式 先在电脑上生成ssh的加密公私钥 使用如下命令 命令中要将 C后面的参数设置为自己的github
  • windows文件保护服务器,Windows 文件保护功能的说明

    WFP 功能的工作方式 WFP 功能使用两种机制为系统文件提供保护 第一种机制在后台运行 在 WFP 收到受保护目录中的文件的目录更改通知后 就会触发这种保护机制 WFP 收到这一通知后 就会确定更改了哪个文件 如果此文件是受保护的文件 W
  • 深度学习十大框架比较

    框架比较 转 1 TensorFlow 对于那些听说过深度学习但还没有太过专门深入的人来说 TensorFlow 是他们最喜欢的深度学习框架 但在这里我要澄清一些事实 在 TensorFlow 的官网上 它被定义为 一个用于机器智能的开源软
  • Deeplabcut教程(一)安装(GPU&CPU版本)(纯新人向)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 Deeplabcut是什么 二 使用步骤 1 环境配置 1 1安装anaconda 1 2换源 1 2安装CUDA和CUdnn GPU 2 Deeplab
  • C++类的继承与派生

    一 基本概念 1 类的继承 是新的类从已有类那里得到已有的特性 或从已有类产生新类的过程就是类的派生 原有的类称为基类或父类 产生的新类称为派生类或子类 2 派生类的声明 class 派生类名 继承方式 基类名1 继承方式 基类名2 继承方
  • 罗技键盘蓝牙搜不到

    罗技K580蓝牙键盘 长按F11 F12在macbookpro 搜索不到 首先 按一下 fn esc 然后长按F11 F12 就可以搜到了
  • 从0开始搭建react项目

    一 项目创建 插件安装 前端项目的创建有三种方式 参考https juejin cn post 6844903953524588552 在html中引入react react dom Babel 使浏览器识别JSX语法 等 使用官方脚手架c
  • Missing variable is:CMAKE_CUDA_DEVICE_LINK_EXECUTABLE

    Linux平台下使用CMAKE3 10 2与CUDA10 2混合编程时出现错误 Missing variable is CMAKE CUDA DEVICE LINK EXECUTABLE 根据https github com colmap
  • 如何遍历一个对象所有的属性并判断属性值

    最近的项目里的一个需求 要我判断一个对象里的所有属性 是否存在值不是 或是null的 public boolean checkGoodMode List
  • 服务器物理内存稳定90%多,服务器物理内存使用率90以上

    服务器物理内存使用率90以上 内容精选 换一换 系统每30秒周期性检测HDFS服务直接内存使用状态 当检测到DataNode实例直接内存使用率超出阈值 最大内存的90 时 产生该告警 直接内存使用率小于阈值时 告警恢复 DataNode可用
  • android自定义圆环控件 滑动选择百分比

    之前做了一个聊天应用 其中需要一个圆环控件 滑动可以选择百分比 看效果图 这个自定义view可以分几步完成 画绿色圆环 画灰色圆环 画三角形 画百分比 其中三角形围绕环形旋转 采用Path类实现 首先画出基本的三角形路径 而后适当计算一下