美文网首页
Drawable资源中的Shape和Secletor

Drawable资源中的Shape和Secletor

作者: alsheng | 来源:发表于2018-02-08 15:30 被阅读0次

    想必大家对shape和secletor一定不陌生,话不多说,首先对shape的主要属性的介绍:

    Paste_Image.png
    
        <!--设置圆角半径 同时设置五个属性,则Radius属性无效-->
        <corners
            android:bottomLeftRadius="10dp"
            android:bottomRightRadius="10dp"
            android:radius="10dp"
            android:topLeftRadius="10dp"
            android:topRightRadius="10dp" />
        <!--填充颜色-->
    
        <solid android:color="#ffffff" />
        <!--设置大小-->
        <size
            android:width="100dp"
            android:height="100dp" />
        <!--设置四个方向上的间隔-->
        <padding
            android:bottom="10dp"
            android:left="10dp"
            android:right="10dp"
            android:top="10dp" />
        <!--dashWidth和dashGap属性,只要其中一个设置为0dp,则边框为实现边框-->
        <stroke
            android:width="1dp"
            android:color="#FF4081"
            android:dashGap="1dp"
            android:dashWidth="1dp" />
    </shape>
    
    Paste_Image.png
    
    android:type=["linear" | "radial" | "sweep"]    //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变  
        android:angle="integer"     //渐变角度,必须为45的倍数,0为从左到右,90为从上到下  
        android:centerX="float"     //渐变中心X的相当位置,范围为0~1  
        android:centerY="float"     //渐变中心Y的相当位置,范围为0~1  
        android:startColor="color"   //渐变开始点的颜色  
        android:centerColor="color"  //渐变中间点的颜色,在开始与结束点之间  
        android:endColor="color"    //渐变结束点的颜色  
        android:gradientRadius="float"  //渐变的半径,只有当渐变类型为radial时才能使用  
    
    
      <gradient
            android:angle="45"
            android:centerColor="#FF4081"
            android:endColor="#000000"
            android:startColor="#ffffff"
            android:type="linear"/>
    
       <gradient
               android:centerColor="#FF4081"
               android:endColor="#000000"
               android:gradientRadius="100dp"
               android:startColor="#ffffff"
               android:type="radial" />
    
        <gradient
            android:centerColor="#FF4081"
            android:endColor="#000000"
            android:startColor="#ffffff"
            android:type="sweep" />
    

    secletor的主要属性的介绍:

        <!-- 当前窗口失去焦点时 -->
        <item android:drawable="#FF4081" android:state_window_focused="false" />
    
      <!-- 不可用时 当控件中设置为 android:enabled="false" -->
        <item android:drawable="@color/colorHong" android:state_enabled="false" />
    
        <!-- 按压时 -->
        <item android:drawable="@color/colorHuang" android:state_pressed="true" />
    
    

    通过EditText来证明state_focused属性

    Paste_Image.png
        <item android:state_focused="true" android:drawable="@color/colorBlue" />
        <item android:drawable="@color/colorBlack" />
    

    通过CheckBox来证明state_checked属性

    Paste_Image.png
        <item android:state_checked="true" android:drawable="@color/colorBlue"/>
        <item android:drawable="@color/colorBlack"/>
    

    通过ListView 来证明state_selector属性

    Paste_Image.png
    
      <item android:state_selected="true" android:drawable="@color/colorBlue"/>
      <item android:drawable="@color/colorBlack"/>
    
       listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    view.setSelected(true);//必须加这个
                    Toast.makeText(DrawableActivity.this,list.get(position),Toast.LENGTH_LONG).show();
                }
            });
    

    1.Secletor中的state_pressed属性与Shape的配合使用


    Paste_Image.png
    <item android:state_pressed="true">
            <shape>
                <corners android:radius="10dp" />
                <size android:width="100dp" android:height="100dp" />
                <solid android:color="#ffffff" />
            </shape>
        </item>
    
        <item android:state_pressed="false">
            <shape>
                <corners android:radius="10dp" />
                <size android:width="100dp" android:height="100dp" />
                <solid android:color="@color/colorAccent" />
            </shape>
        </item>
    

    相关文章

      网友评论

          本文标题:Drawable资源中的Shape和Secletor

          本文链接:https://www.haomeiwen.com/subject/grxhhxtx.html