shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector。可以这样说,shape和selector在美化控件中的作用是至关重要的。
1.Shape
简介
作用:XML中定义的几何形状
位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:android:background="@drawable/文件的名称"
属性:
1. <shape> android:shape=["rectangle" | "oval" | "line" | "ring"]
2.
3. 其中rectagle矩形,oval椭圆,line水平直线,ring环形
4.
5. <shape>中子节点的常用属性:
6.
7. <gradient> 渐变
8.
9. android:startColor 起始颜色
10.
11. android:endColor 结束颜色
12.
13. android:angle 渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;
14.
15. android:type 渐变的样式 liner线性渐变 radial环形渐变 sweep
16.
17. <solid > 填充
18.
19. android:color 填充的颜色
20.
21. <stroke > 描边
22.
23. android:width 描边的宽度
24.
25. android:color 描边的颜色
26.
27. android:dashWidth 表示'-'横线的宽度
28.
29. android:dashGap 表示'-'横线之间的距离
30.
31. <corners > 圆角
32.
33. android:radius 圆角的半径 值越大角越圆
34.
35. android:topRightRadius 右上圆角半径
36.
37. android:bottomLeftRadius 右下圆角角半径
38.
39. android:topLeftRadius 左上圆角半径
40.1. android:bottomRightRadius 左下圆角半径
2.Selector
简介
位置:res/drawable/文件的名称.xml
使用的方法:
Java代码中:R.drawable.文件的名称
XML中:android:background="@drawable/文件的名称"
selector.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
3.
4. <item android:state_selected="true">
5. <shape>
6. <gradient android:angle="270" android:endColor="#99BD4C"
7. android:startColor="#A5D245" />
8. <size android:height="60dp" android:width="320dp" />
9. <corners android:radius="8dp" />
10. </shape>
11. </item>
12. <item android:state_pressed="true">
13. <shape>
14. <gradient android:angle="270" android:endColor="#99BD4C"
15. android:startColor="#A5D245"/>
16. <size android:height="60dp" android:width="320dp" />
17. <corners android:radius="8dp" />
18. </shape>
19. </item>
20. <item>
21. <shape>
22. <gradient android:angle="270" android:endColor="#A8C3B0"
23. android:startColor="#C6CFCE"/>
24. <size android:height="60dp" android:width="320dp" />
25. <corners android:radius="8dp" />
26. </shape>
27. </item>
28. </selector>
list_item.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="horizontal"
4. android:layout_width="fill_parent"
5. android:layout_height="wrap_content"
6. android:background="@drawable/selector"
7. >
8. <ImageView
9. android:id="@+id/img"
10. android:layout_width="wrap_content"
11. android:layout_height="wrap_content"
12. android:layout_gravity="center_vertical"
13. android:layout_marginLeft="20dp"
14. />
15. <TextView
16. android:text="data"
17. android:id="@+id/title"
18. android:layout_width="fill_parent"
19. android:layout_height="wrap_content"
20. android:gravity="center_vertical"
21. android:layout_marginLeft="20dp"
22. android:layout_marginTop="20dp"
23. android:textSize="14sp"
24. android:textStyle="bold"
25. android:textColor="@color/black"
26. >
27. </TextView>
28. </LinearLayout>
main.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3. android:orientation="vertical"
4. android:layout_width="fill_parent"
5. android:layout_height="wrap_content"
6. android:background="#253853"
7. >
8. <ListView
9. android:id="@+id/list"
10. android:layout_width="match_parent"
11. android:layout_height="match_parent"
12. android:cacheColorHint="#00000000"
13. android:divider="#2A4562"
14. android:dividerHeight="3px"
15. android:listSelector="#264365"
16. android:drawSelectorOnTop="false"
17. >
18. </ListView>
19. </LinearLayout>
colors.xml
1. <?xml version="1.0" encoding="utf-8"?>
2. <resources>
3. <color name="white">#FFFFFFFF</color>
4. <color name="transparency">#00000000</color>
5. <color name="title_bg">#1C86EE</color>
6. <color name="end_color">#A0cfef83</color>
7. <color name="black">#464646</color>
8. </resources>
MainActivity
1. package com.lingdududu.customlist;
2.
3. import java.util.ArrayList;
4. import java.util.HashMap;
5.
6. import xb.customlist.R;
7.
8. import android.R.array;
9. import android.app.Activity;
10. import android.os.Bundle;
11. import android.widget.ArrayAdapter;
12. import android.widget.ListView;
13. import android.widget.SimpleAdapter;
14.
15. public class MainActivity extends Activity {
16. ListView list;
17.
18. new String[]{
19. "China","UK","USA","Japan","German","Canada","ET","Narotu"
20. };
21.
22.
23.
24. @Override
25. public void onCreate(Bundle savedInstanceState) {
26. super.onCreate(savedInstanceState);
27. setContentView(R.layout.main);
28.
29.
30. list =(ListView) findViewById(R.id.list);
31.
32. new SimpleAdapter(this, getData(), R.layout.list_item,
33. new String[]{"title","img"}, new int[]{R.id.title,R.id.img});
34.
35. list.setAdapter(adapter);
36. }
37.
38. private ArrayList<HashMap<String, Object>> getData() {
39. new ArrayList<HashMap<String,Object>>();
40.
41. for(int i =0;i<data.length;i++){
42. new HashMap<String, Object>();
43. "title", data[i]);
44. "img", R.drawable.item_left2);
45. dlist.add(map);
46. }
47. return dlist;
48. }
49. }
效果图: