Skocz do zawartości
RedScorpio

Przycisk poza granicami widzialnego obszaru

    Rekomendowane odpowiedzi

    Tak więc od paru dni dłubię sobie coś w androidowej Javie ale natknąłem się na problem z przyciskami, który można opisać mniej więcej tak:

    Mam zrobione menu gry, kilka przycisków, które działają poprawnie. Po naciśnięciu jednego z nich, aplikacja ma wykonać animację przesuwania Layouta tak, żeby po płynnym przejściu pojawiły się inne buttony, obrazki i obiekty w nim zawarte. Wszystko działa dość dobrze, gdyby nie fakt, że każdy przycisk, który został wysunięty poza widzialny obszar, traci swojego OnClickListenera. Do tego udało mi się dojść zmieniając kod kilka razy. Moje pytanie: Jak sprawić, by przyciski działały nawet po wyjechaniu za granice widzianego obszaru? Może jest na to jakiś mały wpis w xmlu, albo szybki sposób na zrobieniu tego w Javie? Mogę sobie poradzić inaczej, tworząc kilka if'ów, ale to nieco spowolni aplikację, a lepiej byłoby zainicjalizować wszystko na początku i działać płynnie przez resztę czasu trwania gry...

    Drugi problem: obrazki które mają robić za przyciski są okrągłe, a sam przycisk wystaje poza koło. Jak ukryć standardową kontrolkę przycisku?

    Trzecie pytanie: Czy może prościej dałoby się to wszystko załatwić dodając zamiast ImageButtonów ImageViewy?

    ---------- Post dołączono o 12:40 ---------- Poprzedni post napisano o 11:55 ----------

    Już wiem jak to działa:

    Animacja tylko robi złudzenie, że coś się przemieszcza, a tak naprawdę nic się nie zmienia, a po kliknięciu w puste miejsce (tam, gdzie był kiedyś przycisk), animacja odtwarza się jeszcze raz. Czyli trzeba pokombinować z jednoczesną zmianą współrzędnych Layoutu.

    Co do drugiego problemu, to jeszcze się z nim nie uporałem...

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Rozwiązałem już sam wszystkie problemy:

    3. Zamiast ImageButtonów lepiej było użyć Buttony (do niektórych rzeczy) - w połączeniu z grafiką przerobioną 9patch toolem wyglądają i działają świetnie.

    2. Do ImageButtonów jest parametr android:background - można nim określić obrazek tła, albo kolor, który ja dałem jako transparentny

    1. Perfekcyjne przesuwanie rozwiązałem czymś takim:

    AbsoluteLayout menu; //Layout
    int screen_x, screen_y; //położenie Layouta, czy Viewa
    Animation leftmove = new Animation(){
       	@Override
    	public void initialize(int width, int height, int parentWidth, int parentHeight){
    		super.initialize(width, height, parentWidth, parentHeight);
    		setDuration(czas trwania przejścia);
    		setFillAfter(true);
    		setInterpolator(new DecelerateInterpolator());}
    	@Override
    	protected void applyTransformation(float interpolatedTime, Transformation t){
    		menu.scrollTo((int) (screen_x-800*interpolatedTime), screen_y); //+800 dla przesunięcia w prawo, +480 dla przesunięcia w dół, -480 dla przesunięcia w górę
    		leftmove.setAnimationListener(new AnimationListener(){
    			public void onAnimationEnd(Animation animation) {
    				screen_x-=800; //analogicznie do funkcji powyżej
    				menu.scrollTo(screen_x, screen_y);
    				menu.clearAnimation();}
    			public void onAnimationRepeat(Animation animation) {}
    			public void onAnimationStart(Animation animation) {}});}};
    

    Na przyszłość jeśli ktoś będzie miał problemy z tego typu rzeczami, to nich pisze w tym temacie, żeby nie robić bałaganu.

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x