安卓開發筆記(三十) 自定義Button

2021-09-20 09:25:21 字數 2678 閱讀 9381

在筆者本人看了很多部落格和書之後,發現很少博主對於自定義控制項能夠進行乙個比較全面的思路講解,大多數都是只講了一些細節,但並沒有講如何把**進行整體的實現。因此這裡講講整體的自定義button實現的詳細過程,其餘的細節則可以檢視其他博主的部落格即可,也可以參考《android開發藝術探索》這本書的第六章,看了我這篇博文之後,相信你一定對自定義控制項會有一定的了解。

首先是建立乙個根節點為shape的xml,用於描述我們所建立的button沒有被按時的介面,如圖:

這樣我們的按鈕自定義介面就完成了,這是在沒被按住的情況下,下面再來看看在按住情況下的程式**,也是乙個shape檔案,後面我們會用選擇器對它們的邏輯進行整合,最後在button控制項裡進行呼叫這個選擇器的邏輯。

<?xml version="

1.0" encoding="

utf-8

"?>

"" >

android:endcolor="

#ffffff

"android:gradientradius="

200dp

"android:startcolor="

#ff8c00

"android:type="

radial

" >

android:width="

5dp"

android:color="

#dcdcdc

" >

android:radius="

23dp

" >

android:bottom="

10dp

"android:left="

10dp

"android:right="

10dp

"android:top="

10dp

" >

這樣在按下按鈕之後,就會呈現出來不同的顯示效果,可以讓使用者明顯感受到一種人機互動的感覺,之後是我們的選擇器,因為在主活動當中我們只能夠呼叫我們的選擇器從而引出這兩個效果。

這個檔案的建立方式和shape類似,這裡就不多說了,我們直接上**:

<?xml version="

1.0" encoding="

utf-8

"?>

"">

"@drawable/demo

" android:state_pressed="

true

">

"@drawable/button_bg

">

我們可以看到在第乙個item下面描述的是我們的按鈕被按下去的介面將會變成demo.xml,平時正常的介面則是button_bg了。這就是上述**的含義,之後我們再去主活動當中呼叫這個選擇器,之後我們的自定義button就輕鬆完成啦!

<?xml version="

1.0" encoding="

utf-8

"?>""

"xmlns:tools="

"android:layout_width="

match_parent

"android:layout_height="

match_parent

"tools:context="

.mainactivity

">

android:layout_width="

match_parent

"android:layout_height="

wrap_content

"android:text="

我是乙個按鈕

"android:background="

@drawable/selector

"/>

可以看到我們在button控制項當中的backgroud屬性當中引入了我們的選擇器,這樣子呢就可以把之前我們所定義的介面引入到這個button按鈕當中了。

posted @

2019-04-29 12:10

geeksongs 閱讀(

...)

編輯收藏

安卓開發筆記(二)

1.建立帶布局的彈出框 alertdialog.builder builder new alertdialog.builder getactivity layoutinflater inflater layoutinflater.from getactivity view view1 inflate...

安卓開發筆記 8

sqlite資料庫 1,簡介 sqlite是乙個輕量級資料庫,占用資源非常低,在記憶體中只需要占用幾百kb的儲存空間。sqlite是乙個輕量級資料庫,占用資源非常低,在記憶體中只需要占用幾百kb的儲存空間。原子性 atomicity 一致性 consistency 隔離性 isolation 永續性...

安卓app開發筆記

首先是一些入門的資料,有很多需要自己學習的 1 網路通訊協議,我優先選擇http,因為熟悉,okhttp很好用,但是我使用更簡單的httpurlconnection來開發 2 資料解析,建議優先選擇json傳輸,一種輕量型的資料格式,解析庫也是很多,可以自己寫介面啥的。3 涉及到陣列型別的資料傳輸與...