- 論壇徽章:
- 0
|
本帖最后由 nighteagle 于 2015-06-02 11:23 編輯
我們在開發(fā)網(wǎng)站時(shí),會發(fā)現(xiàn)當(dāng)我們添加<a/>標(biāo)簽后,標(biāo)簽有一個(gè)點(diǎn)擊效果,比如顏色變化,這樣開看起來用戶體驗(yàn)會很棒,那么在我們的Android開發(fā)中如何加入這樣的效果呢?本篇就為大家揭開它的神秘面紗。
既然是點(diǎn)擊事件的變化,我們就要監(jiān)控用戶是否點(diǎn)擊,這里我有兩種實(shí)現(xiàn)方式:1、通過改變背景圖片達(dá)到上述效果;2、通過改變背景顏色來達(dá)到上述效果。
兩者各有千秋,比如當(dāng)我們設(shè)計(jì)按鈕(Button)的點(diǎn)擊事件時(shí),建議使用第一種;而當(dāng)我們設(shè)計(jì)諸如Item時(shí),建議使用第二種。好了下面開始為大家進(jìn)行代碼分析:
首先為大家介紹第一種:通過改變背景圖片來達(dá)到上述效果,既然是通過改變背景圖片,所以我們需要事先準(zhǔn)備好2張圖片,一張作為未點(diǎn)擊時(shí),一張作為點(diǎn)擊時(shí)。
然后我們需要在res下新建一個(gè)drawable文件夾,在里面新建一個(gè)btn_bg.xml文件:- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 點(diǎn)擊時(shí) -->
- <item android:drawable="@drawable/img_1" android:state_pressed="true"/>
- <!-- 未點(diǎn)擊時(shí) -->
- <item android:drawable="@drawable/img_2" android:state_pressed="false"/>
- </selector>
復(fù)制代碼 我們的布局文件(main_activity.xml):- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".MainActivity" >
-
- <Button
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/btn_bg" (看這一條)
- android:text="點(diǎn)擊變化"
- />
-
- </RelativeLayout>
復(fù)制代碼 特別注意標(biāo)注處。好了我們的第一個(gè)效果就實(shí)現(xiàn)了,大家感覺如何。下面我們來一起學(xué)習(xí)一下第二種方法:
第二種方法無需準(zhǔn)備圖片,我們通過改變背景的顏色來達(dá)到上述效果,既然這里需要使用到顏色,先為大家分享一下16進(jìn)制的顏色對照表:
1.png (119.96 KB, 下載次數(shù): 63)
下載附件
2015-06-02 11:20 上傳
有了顏色對照表,我們就開始進(jìn)行代碼解析吧:
第一步在value文件夾下新建一個(gè)col.xml文件,把我么可能使用到的顏色添加進(jìn)去:- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <drawable name="write">#fff</drawable>
- <drawable name="gray">#aaa</drawable>
- </resources>
復(fù)制代碼 第二步修改res下drawable文件夾下的btn_bg.xml文件:- <?xml version="1.0" encoding="utf-8"?>
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <!-- 點(diǎn)擊時(shí) -->
- <item android:drawable="@drawable/gray" android:state_pressed="true"/>
- <!-- 未點(diǎn)擊時(shí) -->
- <item android:drawable="@drawable/write" android:state_pressed="false"/>
- </selector>
復(fù)制代碼 最后一步我們Item標(biāo)簽設(shè)置:- <RelativeLayout
- android:id="@+id/relative1"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:background="@drawable/btn_bg">
- <ImageView
- android:id="@+id/img1"
- android:layout_width="50dp"
- android:layout_height="50dp"
- android:src="@drawable/img_1"
- android:layout_marginLeft="20dp"
- android:layout_marginTop="20dp"
- android:layout_centerVertical="true"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="20dp"
- android:textColor="#fff"
- android:text="第一個(gè)item"
- android:layout_toRightOf="@id/img1"
- android:layout_centerVertical="true"
- />
- </RelativeLayout>
復(fù)制代碼 這樣我們Item也添加上了點(diǎn)擊事件變化,最后總結(jié)一下這兩種方法,第一種方法我們需要事先準(zhǔn)備材料,而第二種方法,相對來說就靈活許多,我們可以隨心所欲的進(jìn)行修改,非常的方便。 |
|