android开发之Selector与Shape的应用

来源:互联网 发布:免费java教程入门视频 编辑:程序博客网 时间:2024/04/30 13:07

首先,直接上个图,让大伙知道知道,我要干什么?
点击之后会一直保存这个状态,直到你点击了全部开始,状态才会变化 1-1
第一步: 先在你的项目中的/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;
0 0
原创粉丝点击