Merhaba arkadaşlar , Hepimizin başlangıçta karşılaştığı sorunlardan biride oluşturduğumuz butona renk kodu verdiğimizde veya arka planda bir resim verdiğimizde tıklama olayında butonun sanki tıklanmıyormuş gibi gözükmesidir. Butona tıkladığımız anda butonun içe doğru gidip gelmesi veya renginin sarı dan kırmızıya dönmesi gibi efektleri nasıl gerçekleştireceğiz bakalım :
Öncelikle drawable klasörü içine bir xml dosyası oluşturuyoruz aşağıdaki gibi ; bu butonumuzun ilk halinin özelliklerini barındırıyor.
button_initial.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#00acc1"/> <stroke android:width="2dp" android:color="#ffffff"/> <corners android:radius="2dp"/> </shape>
Daha sonra tıklama anında gerçekleşmesini istediğimiz özellikleri barından bir xml dosyası oluşturalım.
button_pressed.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="#006064"/> <stroke android:width="1dp" android:color="#ffffff"/> <corners android:radius="2dp"/> </shape>
Şimdi de bir selector oluşturup tıklanma ve focus olma anlarında nasıl çalışması gerektiğini belirten bir xml dosyası oluşturalım.
button_selector.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <item android:drawable="@drawable/button_initial" /> </selector>
ve son olarak layout kısmında oluşturduğumuz butonun arka planına bu selectoru verelim.
<Button android:id="@+id/bttnName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_title" android:background="@drawable/button_selector" />
background içinde selector xml dosyamızı görüyoruz işte bu şekilde butonlara o tıklanma efektini verebiliriz.
9
Yorum Yaz