2012-06-17 16 views
5

Şu anda çok yoğun ve ekran rotasyonunu çok iyi kullanmıyor canlı bir duvar kağıdı üzerinde çalışıyorum.Live Wallpaper Ekran Rotasyonu

Aslında duvar kağıdı yok edildi ve arama yapmadan boş bir ekran görüntüleniyorSurfaceChanged! İşte

Ben onSurfaceChanged yöntemi içinde ne var:

@Override 
    public void onSurfaceChanged(SurfaceHolder holder, int format, 
      int width, int height) { 
     // TODO Auto-generated method stub 
     super.onSurfaceChanged(holder, format, width, height); 

     mRatio = (float) width/height; 
     if (mRatio > 1) { 
      orientation = 0; 
     } 
     if (mRatio < 1) { 
      orientation = 1; 
     } 
     setRunning(true); 
     Log.i(TAG, "Screen Rotation..."); 
     mHandle.post(r); 
    } 

hiçbir günlük mesajı olmadığından bu yöntem denilen almaz eminim.

Bu neden oluyor ve ekran döndürme işleminin bazı teknikleri nelerdir? Canlı duvar kağıdım o kadar yoğun olabilir ki boşluk aranamaz?

Ayrıca onVisibilityChanged değil de denir ve ben emülatörünüzde uygulamaları açtığınızda, hiçbir günlük mesajı vardır: Manifest'inizde olarak

@Override 
    public void onVisibilityChanged(boolean visible) { 
     // TODO Auto-generated method stub 
     super.onVisibilityChanged(visible); 
     if (visible) { 
      setRunning(true); 
      Log.i(TAG, "Visible..."); 
      mHandle.postDelayed(r, 2000); 
     } else { 
      setRunning(false); 
      Log.i(TAG, "Invisible..."); 
      mHandle.removeCallbacks(r); 
     } 
    } 
+0

: onVisibilityChanged adından ne beklenir değil Daha fazla kod gönderebilir misiniz? Tüm ağır işlerin nerede yapıldığını bilmek gerekiyor. Canlı Duvar Kağıtlarım'da, hem onSurfaceChanged hem de onVisibilityChanged ekran rotasyonları sırasında çağrılır. Ayrıca, yön değiştirme sırasında "Kaydırma için duvar kağıdı için zaman aşımı bekleme" gibi bir şey için LogCat kontrol edin. cevap için – Ole

cevap

1

, beyan:

<activity android:name=".YourActivityName" 
       android:configChanges="keyboardHidden|orientation" 
    </activity> 

Sizin onSurfaceChanged - yöntem sadece manifest içinde configChanges-tüzüğü ilan ederse çağrılabilir! İkinci sorunu konusunda

:

Called when the window containing has change its visibility (between GONE, INVISIBLE, and VISIBLE). Note that this tells you whether or not your window is being made visible to the window manager; this does not tell you whether or not your window is obscured by other windows on the screen, even if it is itself visible. için bunları uygulama onPause() aracılığıyla kullanıcıya "görünür" olup olmadığını kontrol etmeniz gerekir

ve onResume()

+0

teşekkürler, ben bu benim canlı duvar kağıdı hizmetini değiştirdi: - ve işe yaramıyor :( – Denizen

+0

Sorun şu ki, 20 dikdörtgeni sürekli olarak başlatıyorum ve 40 ya da öylesine onları taklit ediyor. Yavaşlatılıyorsa, performansın yavaşlatılmasının yavaşlatılması durumunda bile sürekli olarak kontrol ediliyorsa – Denizen

+0

Yukarıdaki cevap canlı duvar kağıtları için değil, SurfaceView kullanan uygulamalar için geçerli değildir. Yani configChanges-özniteliğini ayarlamak hiçbir şey yapmayacaktır. Lütfen daha fazla kod yazınız .. – Ole

İlgili konular