歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android自定義Shape 加上陰影shadow之方法

Android自定義Shape 加上陰影shadow之方法

日期:2017/3/1 11:12:05   编辑:Linux編程

Android支持自定義Shape, 以畫出需要的形狀,可以作為TextView, EditText, Button的背景drawable資源。Shape很簡單,就是一個XML文件,SDK文檔裡描述其格式如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:shape=["rectangle" | "oval" | "line" | "ring"] >
  5. <corners
  6. android:radius="integer"
  7. android:topLeftRadius="integer"
  8. android:topRightRadius="integer"
  9. android:bottomLeftRadius="integer"
  10. android:bottomRightRadius="integer" />
  11. <gradient
  12. android:angle="integer"
  13. android:centerX="integer"
  14. android:centerY="integer"
  15. android:centerColor="integer"
  16. android:endColor="color"
  17. android:gradientRadius="integer"
  18. android:startColor="color"
  19. android:type=["linear" | "radial" | "sweep"]
  20. android:usesLevel=["true" | "false"] />
  21. <padding
  22. android:left="integer"
  23. android:top="integer"
  24. android:right="integer"
  25. android:bottom="integer" />
  26. <size
  27. android:width="integer"
  28. android:height="integer" />
  29. <solid
  30. android:color="color" />
  31. <stroke
  32. android:width="integer"
  33. android:color="color"
  34. android:dashWidth="integer"
  35. android:dashGap="integer" />
  36. </shape>

其支持的屬性沒有shadow, 做Web前端開發的同學寫CSS可以很方便地加一個shadow屬性值,如何給Android Shape加一個shadow,以得到類似的效果呢?

答案是使用layer-list ! 直接上代碼如下:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <shape android:shape="rectangle">
  5. <solid android:color="#792a03" />
  6. <corners android:radius="19dp" />
  7. </shape>
  8. </item>
  9. <item android:top="1px">
  10. <shape android:shape="rectangle">
  11. <gradient android:startColor="#ffdb8f" android:endColor="#ffdb8f"
  12. android:angle="270" />
  13. <padding android:left="5dp" android:top="3dp" android:right="5dp"
  14. android:bottom="3dp" />
  15. <corners android:radius="20dp" />
  16. </shape>
  17. </item>
  18. </layer-list>

將以上xml存成btn_test, 放到res/drawable/目錄下。 將該drawable xml設為一個TextView的backgroiund,

  1. <TextView
  2. android:background="@drawable/btn_test"
  3. android:layout_marginTop="20dip"
  4. android:layout_marginLeft="5dip"
  5. android:textColor="#792a03"
  6. android:text="1天2小時14分20秒"
  7. android:layout_width="wrap_content"
  8. android:layout_height="wrap_content" />
Copyright © Linux教程網 All Rights Reserved