6 Stimmen

Android - Live Wallpaper versetztes Ausschneiden

Ich schreibe gerade ein Live-Wallpaper für Android. Um zu testen, dass mein grundlegender Code funktioniert, habe ich ein Rechteck in der oberen linken Ecke des Bildschirms gezeichnet:

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

Die Hälfte des Rechtecks befand sich unterhalb der Leiste am oberen Rand des Startbildschirms. alt text

Ich habe versucht, Pixel-Offsets zu berücksichtigen:

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);

Das Rechteck wird aber immer noch unterhalb des Balkens gezeichnet. Wie finde ich heraus, wo der Balken endet, damit ich darunter zeichnen kann?

Zum Wohl,

Pete

9voto

gary Punkte 4189

Diese SO-Antwort scheint eine Möglichkeit zu bieten, die Höhe der Statusleiste zu ermitteln: Höhe der Statusleiste? Ich habe den folgenden Code kopiert - ursprünglich beantwortet von 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); 

Ich hoffe, es hilft.

3voto

WarrenFaith Punkte 56919

Haben Sie überprüft, ob ein Offset eingestellt ist (ich vermute, Ihre Offset-Variablen sind Null)? Ich würde auch unter dem Balken zeichnen, denn es gibt einige Homescreen-Apps, die den Balken ausblenden können und dann einen leeren Bereich haben.

Ich vermute auch, dass der von Ihnen verwendete Offset nur verwendet wird, wenn Sie zu anderen Bildschirmen gleiten...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X