android seekbar顯示刻度

SeekBar簡介

SeekBar是Android中的一個可交互UI組件,允許用戶通過拖動滑塊在特定范圍內選擇數值。繼承自ProgressBar,但增加了用戶手動調節功能,常用于音量控制、亮度調節等場景。

核心屬性

android:maxHeight   // 背景高度
android:progressDrawable  // 進度條背景
android:thumb  // 滑塊
android:splitTrack //  hua塊 是否切割 seekbar 背景,默認true,會看到thumb周圍區域被切割
android:thumbOffset // 控制滑塊初始位置
android:paddingStart // 控制滑塊左右空白部分

SeekBar滑塊顯示文字

公司的UI出了一個效果圖,在seekbar的滑塊上顯示進度文字,效果如圖:在這里插入圖片描述
效果還是很不錯的,可是實現起來難呀,咋辦,別擔心,慢慢干。
顯示文字的需求可以通過自定義seekbar的thumb(滑塊)的方式實現,也可以重寫seekbar的ondraw方法實現,這里我選擇第二種方式

package com.htfyun.systemui.widget;import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.widget.SeekBar;public class HtSeekBar extends SeekBar {private static final String TAG = "HtSeekBar";private Paint textPaint = new Paint();private Rect rect = new Rect();public HtSeekBar(android.content.Context context, android.util.AttributeSet attrs) {super(context, attrs);textPaint.setColor(Color.WHITE);textPaint.setTextSize(18);textPaint.setDither(false);}@Overrideprotected synchronized void onDraw(Canvas canvas) {super.onDraw(canvas);int save = canvas.save();String text = String.valueOf(getProgress());textPaint.getTextBounds(text, 0, text.length(), rect);float p = 1f * getProgress() / (getMax() - getMin());float x = (getWidth() - getPaddingStart()) * p - rect.centerX() + getPaddingStart() * (1 - p);float y = 1f * getHeight() / 2 - rect.centerY();canvas.drawText(text, x, y, textPaint);canvas.restoreToCount(save);}
}

寫一個xml實現progressDrawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@android:id/background"><shape><corners android:radius="10dp" /><solid android:color="#FFF" /><strokeandroid:width="1dp"android:color="#4B5563" /></shape></item><item android:id="@android:id/progress"><clip><shape><corners android:radius="10dp" /><solid android:color="#4B5563" /></shape></clip></item><item android:id="@android:id/secondaryProgress"><clip><shape><corners android:radius="10dp" /><solid android:color="#4B5563" /></shape></clip></item>
</layer-list>

在layout布局文件中引用就是了

<com.htfyun.systemui.widget.HtSeekBarandroid:id="@+id/sbVolume"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_alignTop="@id/tvVolume"android:layout_alignBottom="@id/tvVolume"android:layout_marginRight="16dp"android:layout_toRightOf="@id/tvVolume"android:max="@integer/seekbarMax"android:maxHeight="16dp"android:progress="15"android:progressDrawable="@drawable/seekbar"android:splitTrack="false"android:thumb="@drawable/thumb" />

ok,完工。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/96162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/96162.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/96162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【高并發內存池】五、頁緩存的設計

文章目錄Ⅰ. page cache頁緩存的結構設計Ⅱ. 完善central cache中的 get_span() 函數Ⅲ. 實現頁緩存獲取span對象的接口Ⅰ. page cache頁緩存的結構設計 ? 首先頁緩存還是一個哈希桶的結構&#xff0c;但是和前兩者不同的是&#xff0c;頁緩存的哈希桶中存放的是一個或者多個…

Elasticsearch(text和keyword)區別分析

text:全文檢索類型,經過分詞處理,支持模糊匹配? keyword:精確匹配類型,適用于聚合、排序和過濾? text 1. 核心屬性 ?analyzer屬性?: 指定用于索引和搜索的分詞器 默認使用標準分析器(Standard Analyzer) 示例:"analyzer": "ik_max_word"(中文…

通過tailscale實現一臺電腦上vscode通過ssh連接另一臺電腦上的VMware Linux 虛擬機

當需要通過一臺windows電腦上的vscode來ssh連接另一臺電腦上的linux虛擬機進行遠程操作&#xff0c;可以通過tailscale來實現。 Linux虛擬機上安裝tailscale 由于掛代理下載仍然很慢&#xff0c;而清華鏡像源又沒有tailscale的軟件包&#xff0c;所以可以通過下載 DEB 包安裝…

[Upscayl圖像增強] docs | 前端 | Electron工具(web->app)

鏈接&#xff1a;https://upscayl.org/docs&#xff1a;Upscayl Upscayl是一款桌面應用程序&#xff0c;允許用戶使用人工智能放大和增強圖像。 提供了一個用戶友好的圖形界面&#xff08;渲染器用戶界面&#xff09;&#xff0c;用戶可以選擇圖像或文件夾&#xff0c;從多種AI…

阿里云通義MoE全局均衡技術:突破專家負載失衡的革新之道

MoE模型的基本原理與核心價值 混合專家模型&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;是當前AI大模型領域最重要的架構創新之一&#xff0c;其核心思想是通過多個“專家”網絡協同處理輸入數據&#xff0c;并由門控網絡動態選擇或組合各個專家的輸出&#xf…

macOS中設置環境變量的各文件及作用域

在 macOS 中&#xff0c;~/.zshrc 和 ~/.bash_profile 是 Shell 的配置文件&#xff0c;用于設置環境變量、命令別名、啟動命令等。它們在你每次打開終端時會被自動加載。文件對應 Shell作用~/.zshrcZsh&#xff08;macOS Catalina 及以后默認&#xff09;每次打開新的終端窗口…

【華為培訓筆記】OptiX OSN 9600 設備保護專題

OptiX OSN 9600 設備保護專題 1、光層保護 定義 方式 應用

Python開篇撬動未來的萬能鑰匙 從入門到架構的全鏈路指南

&#x1f49d;&#x1f49d;&#x1f49d;歡迎蒞臨我的博客&#xff0c;很高興能夠在這里和您見面&#xff01;希望您在這里可以感受到一份輕松愉快的氛圍&#xff0c;不僅可以獲得有趣的內容和知識&#xff0c;也可以暢所欲言、分享您的想法和見解。 持續學習&#xff0c;不斷…

LabVIEW 與 PLC 通訊

在工業自動化領域&#xff0c;LabVIEW 與 PLC 的通訊極為關鍵&#xff0c;它能實現設備間高效的數據交互與協同運作。接下來&#xff0c;將從應用場景、軟件架構、功能實現、特點、開發問題及解決方法等層面展開闡述。 應用場景? 智能工廠生產線監控系統中&#xff0c;LabVIE…

11-FreeRTOS任務相關的其他API函數

數據來源地址&#xff1a;gitee.com FreeRTOS任務相關的其他API函數 一、FreeRTOS任務相關的其他API函數介紹 1、FreeRTOS任務相關API函數介紹(部分常用的) 答&#xff1a; 二、任務狀態查詢API函數 1、獲取任務優先級函數 答&#xff1a; UBaseType_t uxTaskPriorityGet…

ECMAScript(2)核心語法課件(Node.js/React 環境)

&#x1f4da; ECMAScript 核心語法課件&#xff08;Node.js/React 環境&#xff09; 1. 變量與作用域 變量聲明方式 var&#xff1a;函數作用域&#xff0c;存在變量提升&#xff08;hoisting&#xff09;console.log(a); // undefined&#xff08;變量提升&#xff09; var a…

Selenium 頁面加載超時pageLoadTimeout與 iframe加載關系解析

引言 在 Web 自動化測試中&#xff0c;處理頁面加載超時是每個 Selenium 使用者都會遇到的挑戰。特別是當頁面包含 iframe 時&#xff0c;加載行為變得更加復雜。許多測試工程師困惑于&#xff1a;pageLoadTimeout 究竟能否控制 iframe 的加載&#xff1f;本文將深入探討這一問…

AI面試將重塑企業招聘流程:從效率到精準度的全面升級

每年校招季&#xff0c;HR團隊總被“面試官不夠用”“簡歷太多看不清”“候選人放鴿子”等問題折磨。傳統招聘流程冗長、成本高昂、標準參差&#xff0c;已難以適應快速變化的用人需求。而AI面試技術的突破&#xff0c;正在從底層邏輯上重塑招聘鏈條——從初篩到終面&#xff0…

IOC為什么交由spring容器管理?

根本原因&#xff1a;在 Spring 框架中&#xff0c;將控制反轉&#xff08;IoC&#xff09; 交由 Spring 容器管理&#xff0c;是為了解決傳統編程模式中 “對象創建與依賴管理耦合度高” 的核心問題&#xff0c;最終實現代碼的低耦合、高可維護性、高可測試性。要理解這一設計…

Java反射與動態代理學習筆記

Java 反射與動態代理學習筆記反射概述反射允許對成員變量、成員方法和構造方法進行編程訪問&#xff0c;提供了在運行時分析類和對象的能力。獲取Class對象的三種方式方式代碼示例說明Class.forName()Class.forName("全類名")通過類的全限定名獲取Class對象對象.getC…

RAG提示詞分解

RAG提示詞分解 System Message # 智能問答助手&#xff08;RAG系統提示&#xff09;## 角色定義 您是"智能問答助手"&#xff0c;專門基于提供的上下文信息回答用戶問題。## 核心規則 1. **嚴格基于上下文**&#xff1a;僅使用用戶提供的<context>中的信息&…

YOLOv8 在 Intel Mac 上的 Anaconda 一鍵安裝教程

YOLOv8 在 Intel Mac 上的 Anaconda 一鍵安裝教程 本文適用于 Intel 芯片 Mac&#xff0c;通過 Anaconda 快速搭建 YOLOv8 環境&#xff0c;支持 CPU 推理與 Notebook 可視化。 全程一鍵安裝&#xff0c;適合小白和入門用戶。 &#x1f4d1; 目錄 環境準備 一鍵安裝腳本 運行…

Spring 日志文件

Spring 日志文件 文章目錄Spring 日志文件日志有什么用&#xff1f;日志怎么用&#xff1f;自定義日志在程序中獲取日志對象常用日志框架說明使用日志對象打印日志日志格式說明日志級別日志級別有啥用日志級別分類和使用日志持久化保存更簡單的日志輸出——lomboklombok更多注解…

五、誤差反向傳播法(上)

上一章中&#xff0c;我們介紹了神經網絡的學習&#xff0c;并通過數值微分計算了神經網絡的權重參數的梯度&#xff08;嚴格來說&#xff0c;是損失函數關于權重參數的梯度&#xff09;。數值微分雖然簡單&#xff0c;也容易實現&#xff0c;但缺點是計算上比較費時間。本章我…

Rust Axum 快速上手指南(靜態網頁和動態網頁2024版)

本文基于 Axum 0.7.5&#xff08;當前穩定版&#xff09;、tower-http 0.5.2、MiniJinja 0.7.2 編寫&#xff0c;涵蓋生產環境核心場景&#xff1a;tower-http Layer 疊加與數據傳遞、靜態網頁服務、MiniJinja 動態模板渲染&#xff0c;并重點解析請求 / 應答在多 Layer 中的流…