Android: gradient 使用

在 Android 中使用 gradient(漸變) 通常是通過 drawable 文件來設置背景。下面是可以直接用的幾種用法匯總,包括線性漸變、徑向漸變、掃描漸變(sweep)等:


? 1. Linear Gradient(線性漸變)

<!-- res/drawable/bg_gradient_linear.xml -->
<gradient xmlns:android="http://schemas.android.com/apk/res/android"android:type="linear"android:startColor="#FF512F"android:endColor="#DD2476"android:angle="45" />

🔹 angle 取值范圍:0~360,表示漸變方向(0 為從上往下,90 為從左往右)。


? 2. Radial Gradient(徑向漸變)

<!-- res/drawable/bg_gradient_radial.xml -->
<gradient xmlns:android="http://schemas.android.com/apk/res/android"android:type="radial"android:centerX="0.5"android:centerY="0.5"android:gradientRadius="200"android:startColor="#FF512F"android:endColor="#DD2476" />

🔹 centerX/Y: 百分比(0.5 表示中心)
🔹 gradientRadius: 漸變半徑,單位為 px


? 3. Sweep Gradient(掃描漸變)

<!-- res/drawable/bg_gradient_sweep.xml -->
<gradient xmlns:android="http://schemas.android.com/apk/res/android"android:type="sweep"android:centerX="0.5"android:centerY="0.5"android:startColor="#FF512F"android:endColor="#DD2476" />

? 4. 多色漸變

<gradient xmlns:android="http://schemas.android.com/apk/res/android"android:type="linear"android:startColor="#FF512F"android:centerColor="#F09819"android:endColor="#DD2476"android:angle="90" />

? 5. 設置背景到 View

android:background="@drawable/bg_gradient_linear"

? 6. 代碼中創建 GradientDrawable

val gradient = GradientDrawable(GradientDrawable.Orientation.LEFT_RIGHT,intArrayOf(Color.RED, Color.BLUE)
)
gradient.cornerRadius = 20f
yourView.background = gradient

? 7. 圓角 + 漸變(常用)

<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><corners android:radius="16dp"/><gradientandroid:type="linear"android:startColor="#FF512F"android:endColor="#DD2476"android:angle="90"/>
</shape>

android:angle 方向圖解

在 Android 的 gradient 中使用 android:angle 屬性時,它控制漸變的方向。它的單位是角度,**以“從左到右順時針旋轉”**為標準。


? android:angle 方向圖解(基于 type="linear"

angle漸變方向說明(startColor ? endColor
0從左 ? 右左邊是 startColor,右邊是 endColor
45從左下 ? 右上斜向上漸變
90從下 ? 上下邊是 startColor,上邊是 endColor
135從右下 ? 左上斜向上漸變
180從右 ? 左右邊是 startColor,左邊是 endColor
225從右上 ? 左下斜向下漸變
270從上 ? 下上邊是 startColor,下邊是 endColor
315從左上 ? 右下斜向下漸變

? 舉例說明:

<gradientandroid:startColor="#FF0000"android:endColor="#0000FF"android:angle="90"/>

上面是 從下往上 漸變(即底部是紅色,頂部是藍色),不是從左到右!這也是 Android 和 CSS 的一個差異點,容易混淆。


?注意:

  • angle 必須是 45 的整數倍,否則會被忽略或默認處理。
  • angle 的值是 順時針旋轉角度,從 0 度(從左 ? 右)開始

0:從左到右
45:從左下到右上
90:從下到上
135:從右下到左上
180:從右到左
225:從右上到左下
270:從上到下
315:從左上到右下

?

圖示參考:

          ↑270°  ↑  90°
← 180° ←     → 0° →↓

🌟 注意:這個角度是 Android 中 定義漸變方向用的邏輯值不是數學角度的坐標方向


? 示例一:從左到右漸變

<gradientandroid:type="linear"android:startColor="#FF0000"android:endColor="#0000FF"android:angle="90"/>

🔸 顏色從左(紅) → 右(藍) 漸變。


? 示例二:從上到下漸變

<gradientandroid:type="linear"android:startColor="#00FF00"android:endColor="#000000"android:angle="0"/>

🔸 顏色從上(綠) → 下(黑) 漸變。


?? 注意事項:

  1. angle 只能是 45 的倍數(如 0、45、90、135…),否則 Android 會忽略。
  2. 默認 angle0,也就是 從上到下
  3. android:type="linear" 時,angle 才生效。
  4. 對于 radialsweep 類型,angle 不起作用。

radialsweep的區別


🔵 radial(放射狀漸變)

? 特點:

  • 中心向外發散。
  • 漸變是圓形擴散的效果。
  • 類似水波或聚光燈、光暈。

? 用法示例:

<gradientandroid:type="radial"android:startColor="#FF0000"android:endColor="#0000FF"android:centerX="0.5"android:centerY="0.5"android:gradientRadius="200"/>

? 參數說明:

  • centerX / centerY:中心點位置(0~1,表示百分比)。
  • gradientRadius:漸變的半徑(必須設置)。
  • angle 無效!

? 視覺示意:

  漸變像個圓圈擴散出去:R G B↓↓↓●●●●●●●●●●◎◎◎●●●●◎◎◎●●●●◎◎◎●●●●●●●●●●

🟣 sweep(掃描/掃描狀漸變)

? 特點:

  • 從中心點繞一圈旋轉(360°)改變顏色。
  • 類似時鐘的指針旋轉、雷達掃描。

? 用法示例:

<gradientandroid:type="sweep"android:startColor="#FF0000"android:endColor="#0000FF"android:centerX="0.5"android:centerY="0.5"/>

? 參數說明:

  • centerX / centerY:設置漸變中心。
  • 不支持 angle方向是固定的:從 0° 順時針到 360°。

? 視覺示意:

   色彩從中間繞一圈:紅 → 橙 → 黃↑       ↓紫 ← 藍 ← 綠

🔄 總結對比表:

類型視覺效果可設置角度中心點常用場景
linear直線方向漸變? 支持?按鈕、背景、邊框線
radial中心向外擴散? 不支持?光暈、聚光燈、圓形按鈕
sweep中心旋轉漸變? 不支持?表盤、雷達、加載動畫

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

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

相關文章

打造AI應用基礎設施:Milvus向量數據庫部署與運維

目錄 打造AI應用基礎設施&#xff1a;Milvus向量數據庫部署與運維1. Milvus介紹1.1 什么是向量數據庫&#xff1f;1.2 Milvus主要特點 2. Milvus部署方案對比2.1 Milvus Lite2.2 Milvus Standalone2.3 Milvus Distributed2.4 部署方案對比表 3. Milvus部署操作命令實戰3.1 Milv…

AI Agent 在醫療健康領域的深度應用剖析

引言 隨著人工智能技術的迅猛發展&#xff0c;AI Agent 在醫療健康領域展現出了巨大的應用潛力。它猶如一位智能助手&#xff0c;憑借其強大的數據處理和分析能力&#xff0c;滲透到醫療健康的各個環節&#xff0c;從疾病診斷、治療方案制定到患者康復監控&#xff0c;都發揮著…

樹莓派超全系列教程文檔--(28)boot文件夾內容

boot文件夾內容 boot 文件夾內容bootcode.binstart*.elffixup*.datcmdline.txtconfig.txtissue.txtinitramfs*ssh 或 ssh.txt設備樹blob文件 ( *.dtb )內核文件 ( *.img )overlays 文件夾 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 boot 文件…

SvelteKit 最新中文文檔教程(20)—— 最佳實踐之性能

前言 Svelte&#xff0c;一個語法簡潔、入門容易&#xff0c;面向未來的前端框架。 從 Svelte 誕生之初&#xff0c;就備受開發者的喜愛&#xff0c;根據統計&#xff0c;從 2019 年到 2024 年&#xff0c;連續 6 年一直是開發者最感興趣的前端框架 No.1&#xff1a; Svelte …

【LangChain核心組件】Memory:讓大語言模型擁有持續對話記憶的工程實踐

目錄 一、Memory架構設計解析 1. 核心組件關系圖 2. 代碼中的關鍵實現 二、對話記憶的工程實現 1. 消息結構化存儲 2. 動態提示組裝機制 三、Memory類型選型指南 四、生產環境優化實踐 1. 記憶容量控制 2. 記憶分片策略 3. 記憶檢索增強 五、典型問題調試技巧 1. …

適應 AI 時代的軟件開發流程:用 AI + TDD 構建可維護項目

?? 適應 AI 時代的軟件開發流程:用 AI + TDD 構建可維護項目 本文面向有系統開發經驗的工程師,分享如何結合 Git 管理、AI 協作、YAML 驅動與 TDD 開發方式,高效構建一個可維護、可協作、可交付的嵌入式或通用工程項目。適合 BLE 模塊、協議棧組件、物聯網控制系統等項目落…

使用 chromedriver 實現網絡爬蟲【手抄】

1、引用 selenium 包 <dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>4.29.0</version> </dependency> <dependency><groupId>org.seleniumhq.seleniu…

Python項目--基于Python的自然語言處理文本摘要系統

1. 項目概述 自然語言處理(NLP)是人工智能領域中一個重要的研究方向&#xff0c;而文本摘要作為NLP的一個重要應用&#xff0c;在信息爆炸的時代具有重要意義。本項目旨在開發一個基于Python的文本摘要系統&#xff0c;能夠自動從長文本中提取關鍵信息&#xff0c;生成簡潔而全…

【Vue #3】指令補充樣式綁定

一、指令修飾符 Vue 的指令修飾符&#xff08;Directive Modifiers&#xff09;是 Vue 模板語法中的重要特性&#xff0c;它們以半角句號 . 開頭&#xff0c;用于對指令的綁定行為進行特殊處理 修飾符作用如下&#xff1a; 簡化事件處理&#xff08;如阻止默認行為、停止冒泡…

Reinforcement Learning強化學習--李宏毅機器學習筆記

個人學習筆記&#xff0c;如有錯誤歡迎指正&#xff0c;也歡迎交流&#xff0c;其他筆記見個人空間 強化學習 vs 監督學習 監督學習&#xff08;Supervised Learning&#xff09;&#xff1a;你有輸入和明確的輸出標簽&#xff0c;例如圖像分類。 強化學習&#xff08;Rein…

Windows VsCode Terminal窗口使用Linux命令

背景描述&#xff1a; 平時開發環境以Linux系統為主&#xff0c;有時又需要使用Windows系統下開發環境&#xff0c;為了能像Linux系統那樣用Windows VsCode&#xff0c;Terminal命令行是必不可少內容。 注&#xff1a;Windows11 VsCode 1.99.2 下面介紹&#xff0c;如何在V…

軟件測試之測試數據生成(Excel版)

這是Excel生成測試數據的函數使用 1.時間 1.1.時間 例生成2022-05-01之前一年內任意時間點: =TEXT("2022-05-01"-RAND()-RANDBETWEEN(1,365),"yyyy-mm-dd hh:mm:ss")1.2.年月日 yyyy-mm-dd 以當前時間生成10年的日期 =TEXT(NOW()-RAND()-RANDBETWE…

libwebsocket建立服務器需要編寫LWS_CALLBACK_ADD_HEADERS事件處理

最近在使用libwebsocket&#xff0c;感覺它搭建Http與websocket服務器比較簡單&#xff0c;不像poco庫那么龐大&#xff0c;但當我使用它建立websocket服務器后&#xff0c;發現websocket客戶端連接一直沒有連接成功&#xff0c;不知道什么原因&#xff0c;經過一天的調試&…

從 PyTorch 到 ONNX:深度學習模型導出全解析

在模型訓練完畢后&#xff0c;我們通常希望將其部署到推理平臺中&#xff0c;比如 TensorRT、ONNX Runtime 或移動端框架。而 ONNX&#xff08;Open Neural Network Exchange&#xff09;正是 PyTorch 與這些平臺之間的橋梁。 本文將以一個圖像去噪模型 SimpleDenoiser 為例&a…

Hadoop集群部署教程-P6

Hadoop集群部署教程-P6 Hadoop集群部署教程&#xff08;續&#xff09; 第二十一章&#xff1a;監控與告警系統集成 21.1 Prometheus監控體系搭建 Exporter部署&#xff1a; # 部署HDFS Exporter wget https://github.com/prometheus/hdfs_exporter/releases/download/v1.1.…

【Altium】AD-生成PDF文件圖紙包含太多的空白怎么解決

1、 文檔目標 AD設計文件導出PDF時&#xff0c;圖紙模板方向設置問題 2、 問題場景 AD使用Smart PDF導出PDF時&#xff0c;不管你怎么設置頁面尺寸&#xff0c;只要從橫向轉為縱向輸出&#xff0c;輸出的始終是橫向紙張&#xff08;中間保留縱向圖紙&#xff0c;兩邊大量留白…

大廠面試:六大排序

前言 本篇博客集中了冒泡&#xff0c;選擇&#xff0c;二分插入&#xff0c;快排&#xff0c;歸并&#xff0c;堆排&#xff0c;六大排序算法 如果覺得對你有幫助&#xff0c;可以點點關注&#xff0c;點點贊&#xff0c;謝謝你&#xff01; 1.冒泡排序 //冒泡排序&#xff…

大模型開發:源碼分析 Qwen 2.5-VL 視頻抽幀模塊(附加FFmpeg 性能對比測試)

目錄 qwen 視頻理解能力 messages 構建 demo qwen 抽幀代碼分析 驗證兩個實際 case 官網介紹圖 性能對比&#xff1a;ffmpeg 抽幀、decord 庫抽幀 介紹 聯系 對比 測試結果 測試明細 ffmpeg 100 qps 測試&#xff08;CPU&#xff09; decord 100 qps 測試&#x…

git的上傳流程

好久沒使用git 命令上傳遠程倉庫了。。。。。溫習了一遍&#xff1b; 幾個注意點--單個文件大小不能超過100M~~~ 一步步運行下面的命令&#xff1a; 進入要上傳的文件夾內&#xff0c;點擊git bash 最終 hbu的小伙伴~有需要nndl實驗的可以自形下載哦

驅動學習專欄--字符設備驅動篇--2_字符設備注冊與注銷

對于字符設備驅動而言&#xff0c;當驅動模塊加載成功以后需要注冊字符設備&#xff0c;同樣&#xff0c;卸載驅動模 塊的時候也需要注銷掉字符設備。字符設備的注冊和注銷函數原型如下所示 : static inline int register_chrdev(unsigned int major, const char *name, const…