• Android之shape与selector实现圆角


    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. 其中rectagle矩形,oval椭圆,line水平直线,ring环形
    3. <shape>中子节点的常用属性:
    4. <gradient>  渐变
    5. android:startColor  起始颜色
    6. android:endColor  结束颜色            
    7. android:angle  渐变角度,0从上到下,90表示从左到右,数值为45的整数倍默认为0;
    8. android:type  渐变的样式 liner线性渐变 radial环形渐变 sweep
    9. <solid >  填充
    10. android:color  填充的颜色
    11. <stroke > 描边
    12. android:width 描边的宽度
    13. android:color 描边的颜色
    14. android:dashWidth 表示'-'横线的宽度
    15. android:dashGap 表示'-'横线之间的距离
    16. <corners > 圆角
    17. android:radius  圆角的半径 值越大角越圆
    18. android:topRightRadius  右上圆角半径
    19.   
    20. android:bottomLeftRadius 右下圆角角半径
    21. android:topLeftRadius 左上圆角半径
    22. 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.         String data[] = 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.             SimpleAdapter adapter = 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.             ArrayList<HashMap<String, Object>> dlist = new ArrayList<HashMap<String,Object>>();  
    40.               
    41.             for(int i =0;i<data.length;i++){  
    42.                 HashMap<String, Object>map = new HashMap<String, Object>();           
    43.                 map.put("title", data[i]);  
    44.                 map.put("img", R.drawable.item_left2);  
    45.                 dlist.add(map);   
    46.             }  
    47.             return dlist;  
    48.         }  
    49.     }

     

  • 相关阅读:
    Leetcode-Minimum Depth of Binary Tree
    Leetcode-Path Sum II
    Leetcode-Path Sum
    Leetcode-Flatten Binary Tree to Linked List
    Leetcode-Populating Next Right Pointer in Binary Tree II
    Leetcode-Pascal's Triangle II
    Leetcode-Pascal's Triangle
    Leetcode-Triangle
    第10月第20天 afnetwork like MKNetworkEngine http post
    第10月第13天 xcode ipa
  • 原文地址:https://www.cnblogs.com/Free-Thinker/p/3427485.html
Copyright © 2020-2023  润新知