2012-03-06 28 views
6

W trakcie rozwijania gry mam menu w grze, które pojawia się po naciśnięciu przycisku menu. Niedawno dowiedziałem się jednak, że nowsze wersje Androida nie mają przycisku Menu, lecz pasek akcji.Jak obsługiwać pasek akcji i przycisk menu?

Pamiętaj, że nie używam rzeczywistego menu Androida. Wszystko, co robię, to wykrywanie, że naciśnięto przycisk Menu, a następnie obsługa zdarzenia z poziomu gry. Co oznacza, że ​​wszystko, czego potrzebuję, to coś, co użytkownik może nacisnąć i wykryć, że został naciśnięty.

Moje pytanie brzmi: jak mogę wesprzeć zarówno przycisk menu, jak i nowszy pasek akcji? Chciałbym, aby moja aplikacja obsługiwała poziomy interfejsu API 7-current.

UPDATE

Ok, po przeczytaniu that article, chciałbym przeformułować na moje pytanie. Powiedział, że "dodaje przycisk przepełnienia akcji obok nawigacji systemowej." Mój manifest ma android: minSdkVersion = "7" android: targetSdkVersion = "13", ale w moim emulatorze nie pojawia się przycisk przepełnienia. Emulator ma API 14 ze skórą WSVGA

+0

Ostrożnie, coraz więcej urządzeń nie ma już przycisku menu. – SteeveDroz

+0

skorzystaj z paska akcji (z actionbar compact), a następnie zmień onKeyDown i sprawdź 'keyCode == KeyEvent.KEYCODE_MENU' – sherpya

Odpowiedz

3

This post in the Android Developers blog ma dobrą dyskusję na temat zmiany projektu ze starego przycisku menu Menu w celu użycia nowego Ac Bar i Lista działań związanych z przepełnieniem.

Zawiera również kilka konkretnych wskazówek dotyczących postępowania z kodem podczas przechodzenia z poziomu wstępnego 11 na nowy pasek akcji. Pomocne może być dla ciebie, ale dla twojej konkretnej aplikacji musisz zdecydować, czy chcesz wyświetlić pasek akcji, czy nie. Jeśli nie, możesz dodać przycisk do interfejsu gry, który powiela funkcję przycisku menu na urządzeniach, które go mają.

+2

Po przeczytaniu tego artykułu, chciałbym zmienić moje pytanie. Powiedział, że "dodaje przycisk przepełnienia akcji obok nawigacji systemowej." Mój manifest ma 'android: minSdkVersion =" 7 "android: targetSdkVersion =" 13 "' ale na moim emulatorze nie pojawia się przycisk przepełnienia. Emulator ma API 14 ze skórą WSVGA. –

+1

@JesseJ Yup, mam dokładnie ten sam problem. – HRJ

+0

Gdzie szukasz przycisku przepełnienia działania? Na poziomie "13" uważam, że pojawi się po prawej stronie nawigacji systemowej (u dołu ekranu, a nie na pasku akcji). Wypróbuj poziom kierowania "14". Powinieneś dostać to na pasku akcji. Wygląda na to, że tak naprawdę nie chcesz, aby pasek akcji pojawiał się w ogóle. – PaulP

2

Nowsze wersje Androida mają przycisk Menu (patrz cytat poniżej). Uważam, że najlepszym rozwiązaniem jest po prostu ukrycie paska akcji i użycie przycisku menu w taki sam sposób, jak w starszych wersjach systemu Android.

Cytując Android 4.0 Compatibility Definition

7.2.3. Klawisze nawigacyjne Funkcje Home, Menu i Back są niezbędne w przypadku paradygmatu nawigacji Android.

Implementacje urządzeń MUSZĄ udostępniać te funkcje użytkownikowi przez cały czas uruchamiania aplikacji.

Funkcje te mogą być realizowane za pomocą dedykowanych przycisków fizycznych (takich jak mechaniczne lub pojemnościowych przycisków dotykowych), lub mogą być realizowane z wykorzystaniem dedykowanych klawiszy programowych, gesty, panel dotykowy, etc.Android 4.0 obsługuje obie implementacje.

I:

realizacja urządzenie musi przedstawić klawisz Menu z aplikacjami przy targetSdkVersion < = 10 i nie powinny stanowić klawisz Menu, gdy targetSdkVersion> 10.

+0

Mój program szuka przycisku menu za pomocą 'onKeyDown'. Jeśli nie ma fizycznego przycisku menu, jak mogę go uruchomić? Jak utworzyć przycisk menu, jeśli go nie ma? –

+0

Jeśli przycisk menu miękkiego nie generuje onKeyDown po naciśnięciu, nie wiem. Czy masz fizyczne urządzenie, na którym możesz to sprawdzić? –

+2

Mój fizyczny telefon to Android 2.2 i nie widziałem miękkiego przycisku menu 4.0 –

Powiązane problemy