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

首頁 > 系統 > Android > 正文

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

2019-12-12 00:35:06
字體:
來源:轉載
供稿:網友

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

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

效果很簡單:

就以上圖為例介紹,只有上邊框,邊框紅色、寬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> 標簽的 lefttoprightbottom 屬性可以理解為 viewmarginXX ,這樣接下來的思路二也就順理成章了。

思路二

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>

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

按需自取。

坑?

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

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

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

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

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

更多shape使用請移步這里:

android shape的使用詳解以及常用效果(漸變色、分割線、邊框、半透明陰影效果等)

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 谢通门县| 青铜峡市| 南汇区| 镇雄县| 上栗县| 嘉荫县| 宁都县| 大姚县| 山阴县| 武乡县| 丰都县| 洛隆县| 钟山县| 大姚县| 二连浩特市| 岗巴县| 称多县| 昌平区| 房山区| 南木林县| 天全县| 比如县| 岳阳市| 郓城县| 新邵县| 大洼县| 陕西省| 进贤县| 迭部县| 桂东县| 东至县| 竹北市| 鄂州市| 库伦旗| 临武县| 高尔夫| 平利县| 田东县| 新兴县| 上饶市| 屯留县|