想必大家對shape和secletor一定不陌生,話不多說重父,首先對shape的主要屬性的介紹:
<!--設置圓角半徑 同時設置五個屬性摊沉,則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抽诉,則邊框為實現(xiàn)邊框-->
<stroke
android:width="1dp"
android:color="#FF4081"
android:dashGap="1dp"
android:dashWidth="1dp" />
</shape>
android:type=["linear" | "radial" | "sweep"] //共有3中漸變類型礁凡,線性漸變(默認)/放射漸變/掃描式漸變
android:angle="integer" //漸變角度庐冯,必須為45的倍數(shù)孽亲,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屬性
<item android:state_focused="true" android:drawable="@color/colorBlue" />
<item android:drawable="@color/colorBlack" />
通過CheckBox來證明state_checked屬性
<item android:state_checked="true" android:drawable="@color/colorBlue"/>
<item android:drawable="@color/colorBlack"/>
通過ListView 來證明state_selector屬性
<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的配合使用
<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>