2017-11-17 36 views
5

Tôi biết rằng có rất nhiều câu hỏi về chụp ảnh chụp màn hình và tôi đã kiểm tra hầu hết trong số chúng. Họ có cùng một câu trả lời (với các biến thể mã nhỏ).cách chụp ảnh chụp màn hình?

Tôi đã phương pháp cho ảnh chụp màn hình chụp sau:

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

Và bạn có thể sử dụng nó như thế này: takeScreenShot(getActivity().getWindow())

Tuy nhiên những phương pháp đều có một số hạn chế:

  1. Nếu bạn có một số hộp thoại trên màn hình chúng sẽ không bị chụp trên ảnh chụp màn hình .
  2. Ứng dụng có hoạt động với chế độ xem tăng tốc phần cứng không? Theo đến tài liệu:

    Khi tăng tốc phần cứng được bật, tạo điều kiện cho
    bộ nhớ cache vẽ không ảnh hưởng đến render vì hệ thống sử dụng một cơ chế khác nhau
    cho khả năng tăng tốc mà bỏ qua các cờ

  3. Ảnh chụp màn hình chứa các hộp màu đen thay vì GLviews. (ví dụ: khi ứng dụng của bạn có bản đồ.). Nó có vẻ như là kết quả của điểm thứ 2.

Vì vậy, câu hỏi của tôi là, có giải pháp nào không có rễ có thể giải quyết ít nhất một số vấn đề của tôi không?

+0

Tại thuê Tôi muốn chụp các hộp thoại –

Trả lời

Các vấn đề liên quan