Widzieliście kiedyś w sklepie Play aplikację typu: odblokowywanie odciskiem palca? Z tym, że przykładaliśmy palec do ekranu? Nie trudno domyślić się sztuczki, jaka jest tam zastosowana, czyli gdzieś jest niewidoczny przycisk, po kliknięciu którego aplikacja zadziała, bądź nie. Jednakże chcąc to samemu zaimplementować można stracić trochę czasu, próbując ustawić wartość .setVisibility() na odpowiednim widoku. Do tego typu zastosowań przydaje się metoda .setAlpha() przyjmująca wartości od 0 do 255, gdzie zero oznacza całkowitą przezroczystość. No dobrze, to w takim razie do czego .setVisibility()? Przyjmuje ona 3 parametry:
View.VISIBLE;
View.INVISIBLE;
View.GONE;
Działanie pierwszego jest oczywiste, przycisk ma pozostać normalnie widoczny. Czym się różnią drugi i trzeci? W przypadku w którym zostanie wybrana niewidzialność, nasz obiekt zniknie, ale zajmowane przez niego miejsce pozostanie puste, tak jak by dalej tam był, tylko po prostu niewidzialny. Z kolei, jeśli wybierzemy View.GONE, obiekt zniknie całkowicie. Stworzyłem małe demo obrazującego jak to działa:
Jak widać, wszystkie opcje są włączone, z kolei jeśli wybierzemy GONE dla dwóch pierwszych przycisków:
Dlaczego trzeci przycisk zmienił swoją postać? Fragment xml mam nadzieję wszystko wyjaśni:
android:id=”@+id/button3″
android:layout_below=”@+id/button2″
android:layout_alignParentLeft=”true”
android:layout_alignParentStart=”true”
android:layout_alignRight=”@+id/button2″
android:layout_alignEnd=”@+id/button2″ />
Miał odnosić się do prawej strony przycisku numer dwa, a skoro nie ma przycisku numer dwa, to został mu tylko wrap_content.
Metoda .setEnabled() jest raczej oczywista, po prostu włącz bądź wyłącz. Ciekawie robi się w sytuacji, w której połączymy ją z metodą .setAlpha(), ponieważ taka kombinacja, przy opcji visibility jako visible, powoli nam osiągnąć to, o czym pisałem we wstępie, czyli powstanie nasz ukryty przycisk. Jednakże już visibilty jako invisible, zaburzy tą konstrukcję.
Mam nadzieję, że zmieszczone tutaj informację trochę rozjaśnią problemy z dziwnym zachowaniem przycisków w niektórych sytuacjach. Stworzyłem aplikację z którą można trochę poeksperymentować i zobaczyć jak zachowają się przyciski w różnych sytuacjach. Link do repozytorium.
Pozdrawiam!