android开发之Selector与Shape的应用

首先,直接上个图,让大伙知道知道,我要干什么?

第一步: 先在你的项目中的/res/下创建drawable文件夹并创建三份文件:
①.allstart_press_shape.xml:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/s_5dp"/>
    <stroke android:width="@dimen/s_1dp" android:color="@color/color_blue"/>
    <solid android:color="@color/color_f5f4f4"/>
</shape>

②.allstart_shape.xml:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/s_5dp"/>
    <stroke android:width="@dimen/s_1dp" android:color="@color/color_bebebe"/>
    <solid android:color="@color/color_f5f4f4"/>
</shape>

③.allstart_selector.xml:

<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:drawable="@drawable/allstart_press_shape" />
    <item android:drawable="@drawable/allstart_shape"/>
</selector>

第二步:在/res/values下创建style_layout.xml,这里为了好区分,我写了一样的style,你只要写cacheing_all_stop或者cacheing_all_start即可!

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--全部暂停-->
    <style name="cacheing_all_stop"> <item name="android:layout_width">@dimen/s_165dp</item> <item name="android:layout_height">@dimen/s_38dp</item> <item name="android:textColor">?attr/textColor_333</item> <item name="android:textSize">@dimen/s_16dp</item> <item name="android:gravity">center</item> <item name="android:background">@drawable/allstart_selector</item> </style>
    <!--全部开始-->
    <style name="cacheing_all_start"> <item name="android:layout_width">@dimen/s_165dp</item> <item name="android:layout_height">@dimen/s_38dp</item> <item name="android:textColor">?attr/textColor_333</item> <item name="android:textSize">@dimen/s_16dp</item> <item name="android:gravity">center</item> <item name="android:background">**@drawable/allstart_selector**</item> //进行了引用 </style>
</resources>

那么,细心地哥们,有可能注意到了一个点,那就是我这的颜色是进行引用的!那么,这个怎么弄呢?
首先在/res/values/attrs.xml文件下:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="textColor_333" format="reference|color" />
<resources>

然后在/res/values/style.xml文件下的你的项目设置的主题下进行添加一下代码:
eg:本人的项目当中使用的Theme是BrowserThemeDefault主题:

<application
        android:icon="@drawable/icon_app"
        android:label="@string/app_name"
        android:theme="@style/**BrowserThemeDefault**" >

因此,我就得在style.xml文件中这么写:

<resources>
    <style name="BrowserThemeDefault" parent="@android:style/Theme.NoTitleBar"> <item name="textColor_333">@color/color_333</item> </style>
<resources>

第三步:进行最终显示操作:

<LinearLayout
        android:id="@+id/ll_start_stop"
        android:layout_below="@id/head"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/s_15dp"
        android:layout_marginLeft="@dimen/s_10dp"
        android:orientation="horizontal"
        android:weightSum="2"
        >
        <TextView
            android:id="@+id/tv_allStop"
            style="@style/cacheing_all_stop"
            android:text="@string/title_allStop"
            android:layout_weight="1"
            />

        <TextView
            android:id="@+id/tv_allStart"
            android:text="@string/title_allStart"
            style="@style/cacheing_all_start"
            android:layout_weight="1"
            android:layout_marginLeft="@dimen/s_10dp"
            android:layout_marginRight="@dimen/s_10dp"
            />
</LinearLayout>

第四步:进行最终点击操作:

case R.id.tv_allStop : //全部暂停按钮事件
      //改变按钮颜色
      tv_allStop.setBackgroundResource(R.drawable.allstop_selector);
      tv_allStop.setTextColor(getResources().getColor(R.color.color_blue));

      tv_allStart.setBackgroundResource(R.drawable.allstart_selector);
      tv_allStart.setTextColor(getResources().getColor(R.color.color_333));
      break;
case R.id.tv_allStart : //全部开始按钮事件
      //改变按钮颜色
      tv_allStart.setBackgroundResource(R.drawable.allstop_selector);
      tv_allStart.setTextColor(getResources().getColor(R.color.color_blue));

      tv_allStop.setBackgroundResource(R.drawable.allstart_selector);
      tv_allStop.setTextColor(getResources().getColor(R.color.color_333));
      break;

你可能感兴趣的:(selector,shape)