国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高淳县| 万安县| 沾化县| 邵东县| 贵定县| 仲巴县| 巴青县| 南京市| 壶关县| 彝良县| 日喀则市| 周口市| 新丰县| 大邑县| 张家界市| 廉江市| 丘北县| 宁国市| 鄂托克旗| 广南县| 盐池县| 射洪县| 筠连县| 乐业县| 宝山区| 广饶县| 大埔区| 富裕县| 英德市| 花垣县| 大石桥市| 农安县| 云龙县| 昌都县| 平阳县| 巴彦淖尔市| 远安县| 平山县| 晋江市| 虹口区| 延边|