国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

詳解Android用Shape制作單邊框圖的兩種思路和坑

2019-10-21 21:41:22
字體:
來源:轉載
供稿:網友

開發中遇到單/多邊框的UI,簡單的可以自己寫shape圖,復雜的一般都讓設計配合制作9patch圖了。

今天不說需要切圖的情況,只聊簡單的單/多邊框,主要是實現思路。

效果很簡單:

Android,Shape,單邊框圖

就以上圖為例介紹,只有上邊框,邊框紅色、寬1dp,其余為白色。

思路一

  • 兩層畫布疊加:底層紅色;上層白色;
  • 上層白色畫布下移1dp。

代碼實現:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">  <!--下層畫布,紅色-->  <item>    <shape>      <solid android:color="#f10606" />    </shape>  </item>  <!--下層畫布,白色,向下移1dp-->  <item android:top="1dp">    <shape>      <solid android:color="#ffffff" />    </shape>  </item></layer-list>

其中 <item> 標簽的 left 、 top 、 right 、 bottom 屬性可以理解為 view 的 marginXX ,這樣接下來的思路二也就順理成章了。

思路二

margin有正值,也有負值,所以...

  • 兩層畫布:底層全部白色;上層只有紅色邊框,邊框寬度1dp;
  • 上層紅色邊框分別設置左、右、下margin為-1dp(這里只要負值大于邊框寬度即可,并且必須大于邊框寬度)

代碼實現:

<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android">  <!--下層畫布,全白色-->  <item>    <shape>      <solid android:color="#ffffff" />    </shape>  </item>  <!--上層畫布,紅色邊框,寬度1dp;左、右、下設置margin-->  <item    android:bottom="-1dp"    android:left="-1dp"    android:right="-1dp"    android:top="0dp">    <shape>      <stroke        android:width="1dp"        android:color="#f10606" />    </shape>  </item></layer-list>

單邊框就這樣了,同理,那二邊框、三邊框也就簡單了。

按需自取。

坑?

你以為到則里就結束了?圖樣圖森炮!

跑一下上邊思路二的代碼看看效果

Android,Shape,單邊框圖

神馬情況, stroke 里 width 的值和 item 里 left 等的值轉化為像素的比例還不一樣?并且不同手機分辨率效果也不同,分辨率越高越容易出現。

當然,思路二里把 item 里 left 等的負值絕對值設置比 width 大的多一些就闊以了;另外,思路一是沒這個問題的。

至于原因嘛,太晚了,睡一覺再研究吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宣武区| 晋宁县| 陵川县| 万州区| 毕节市| 休宁县| 新丰县| 方城县| 苍南县| 象州县| 峨边| 东兰县| 南木林县| 襄樊市| 惠东县| 五河县| 四子王旗| 康马县| 额尔古纳市| 锦屏县| 海口市| 密云县| 阿拉善左旗| 建水县| 启东市| 蒙自县| 光山县| 石柱| 金乡县| 乌鲁木齐市| 临朐县| 界首市| 阳春市| 诸城市| 浙江省| 抚顺市| 洞口县| 定日县| 阿克苏市| 锡林郭勒盟| 铁岭县|