2017-11-17 95 views
5

Ekran görüntülerini yakalama konusunda birçok soru olduğunu biliyorum ve bunların çoğunu kontrol ettim. Aynı cevaba sahipler (küçük kod varyasyonları ile).Ekran görüntüsü nasıl alınır?

Ben ekran görüntüsü yakalama yöntemi vardır:

@NonNull 
public static Bitmap takeScreenShot(Window window) throws IOException { 
    final View rootView = window.getDecorView().getRootView(); 
    final boolean drawingCacheEnabled = rootView.isDrawingCacheEnabled(); 
    rootView.setDrawingCacheEnabled(true); 

    try { 
     return Bitmap.createBitmap(rootView.getDrawingCache()); 
    } finally { 
     rootView.setDrawingCacheEnabled(drawingCacheEnabled); 
    } 
} 

Ve bu gibi kullanabilirsiniz: takeScreenShot(getActivity().getWindow())

bu yaklaşım çeşitli sınırlamalar vardır Ancak: Bazı diyaloglar varsa

  1. Ekranda ekran görüntüsünde yakalanmayacaklar.
  2. Donanım hızlandırılmış görünümleriyle çalışır mı? belgelerine göre: donanım hızlandırıcısı
    çekme önbellek sağlayan açıldığında

    sistem flag

  3. ekran görüntüsü göz ardı hızlanma için bir
    farklı bir mekanizma kullandığından oluşturma üzerinde hiçbir etkisi yoktur GLviews yerine siyah kutular içerir. (ör. uygulamanızın haritaları olduğunda.). 2 puanlık bir sonuç gibi görünüyor.

Benim sorum şu ki, en azından bazı sorunlarımı çözebilecek köklenme olmadan herhangi bir çözüm var mı?

+0

Ben diyaloglar yakalamak istiyorum: https://github.com/AndroidDeveloperLB/ScreenshotSample

Ayrıca şu kullanışlı okuma olacak –

cevap

İlgili konular