2010-08-18 9 views
6

Sto scrivendo uno sfondo animato per Android. Per testare il mio codice di base stava lavorando ho disegnato un rettangolo in alto a sinistra cornor dello schermo:Android - Live Wallpaper offset clipping

canvas.drawRect(0f,0f,50f,50f,paint); 

metà del rettangolo era sotto la barra nella parte superiore della schermata iniziale. alt text

ho cercato di prendere in considerazione gli offset di pixel utilizzando:

public void onOffsetsChanged(float xOffset, float yOffset, 
      float xOffsetStep, float yOffsetStep, int xPixelOffset, 
      int yPixelOffset) 

... 

    canvas.drawRect(0f+xPixelOffset,0f+yPixelOffset,50f+xPixelOffset,50f+yPixelOffset 
    ,paint); 

Ma il rettangolo è ancora redatto sotto la barra. Come trovare dove finisce la barra in modo da poter disegnare sotto di essa?

Cheers,

Pete

+0

possibile duplicato di [Altezza barra di stato?] (Http://stackoverflow.com/questions/3355367/height-of-statusbar) – ChrisF

risposta

9

Questo SO risposta sembra fornire un modo per ottenere l'altezza della barra di stato: Height of statusbar? Ho copiato il codice qui sotto - originariamente risposto da Jorgesys.

Rect rectgle= new Rect(); 
Window window= getWindow(); 
window.getDecorView().getWindowVisibleDisplayFrame(rectgle); 
int StatusBarHeight= rectgle.top; 
int contentViewTop= 
    window.findViewById(Window.ID_ANDROID_CONTENT).getTop(); 
int TitleBarHeight= contentViewTop - StatusBarHeight; 

    Log.i("*** Jorgesys :: ", "StatusBar Height= " + StatusBarHeight + " , TitleBar Height = " + TitleBarHeight); 

Spero che sia d'aiuto.

+3

Forse ho sorvolato qualcosa, ma non riesco a scoprire come chiamare getWindow() dallo sfondo animato. WallpaperService e WallpaperService.Engine non hanno un metodo getWindow(). È possibile utilizzare facilmente getWindow() in un'attività, ma uno sfondo animato si basa sulla classe di servizio. Qualcuno può spiegare? –

+0

Bella risposta abbiamo l'altezza, ora in alcuni telefoni/schede la barra di stato è sotto e in alcuni la sua cima come sappiamo la posizione della barra di stato –

+0

@ RenjithKN dovresti fare una nuova domanda – gary

3

Avete controllato se un offset è impostato (indovinate le variabili di offset sono pari a zero)? Vorrei disegnare anche sotto la barra, perché ci sono alcune app della schermata Home che possono fondere la barra e avrete un'area vuota.

ho anche intuire che l'offset si utilizza viene utilizzato solo se si fa scorrere ad altre schermate ...

+0

Ho appena controllato e sono entrambi 0. noi c'è un altro modo per ottenere l'altezza di la barra dello schermo iniziale? – Peter

+0

In un'applicazione normale è possibile ottenere la differenza tra la dimensione dello schermo del dispositivo e la dimensione della vista, in modo da poter calcolare l'altezza di ogni barra. Non so se questo funziona per gli sfondi. – WarrenFaith