从广播到对讲机:聊聊NBFM窄带调频在实际通信系统里的那些事儿
2026/4/25 9:27:19
<?xml version="1.0" encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><gradientandroid:angle="270"android:endColor="#051d3e"android:startColor="#062a53"android:type="linear"/></shape><shapeandroid:shape="rectangle">android:shape="rectangle"background/src/foreground<gradientandroid:angle="45"android:startColor="#062a53"android:endColor="#051d3e"android:type="linear"android:useLevel="true"/>android:type="linear"渐变类型
可选值:
linear(线性,最常用)radial(径向)sweep(扫描)👉 你这里是线性渐变
android:startColorandroid:endColorandroid:angle="45"(重点)定义渐变方向(角度)
⚠️Android 的角度规则不是数学坐标系
| angle | 渐变方向 |
|---|---|
0 | 左 → 右 |
90 | 下 → 上 |
180 | 右 → 左 |
270 | 上 → 下 |
45 | 左下 → 右上 |
135 | 右下 → 左上 |
225 | 右上 → 左下 |
315 | 左上 → 右下 |
android:useLevel="true"⚠️这是一个高级属性
LevelListDrawable中才有意义level (0–10000)变化false或直接删除👉 你现在这个场景:不需要它
你当前是:
android:angle="45"等价于:
左下 → 右上
但你期望的是:
左上浅色 → 右下深色
所以方向错了
315<?xml version="1.0" encoding="utf-8"?><shapexmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><gradientandroid:type="linear"android:angle="315"android:startColor="#062a53"<!--左上:浅色-->android:endColor="#051d3e"<!-- 右下:深色 -->android:useLevel="false" /></shape>useLevel(推荐)<gradientandroid:type="linear"android:angle="315"android:startColor="#062a53"android:endColor="#051d3e"/>想象一条箭头:
startColor → endColor
你要的是:
左上 → 右下对应:
angle = 315| 错误 | 后果 |
|---|---|
| angle 用 45 | 方向完全反 |
| useLevel=true | 渐变可能异常 |
| 颜色写反 | 看起来“怪” |
| 不理解 angle | 调半天调不对 |
如果你后面还要:
可以升级为:
MaterialShapeDrawableCompose / Shader