2014-04-25 15 views
5

Tôi muốn chuyển đổi màn hình ứng dụng của mình và chuyển đổi nó thành một Bitmap. Tôi đã biết cách chuyển đổi một khung nhìn thành một bitmap, nhưng đó không phải là những gì tôi muốn vì màn hình của tôi được tạo thành từ nhiều mảnh. Vì vậy, tôi muốn có thể lấy màn hình và chuyển đổi nó thành một bitmap ... Trợ giúp được đánh giá cao cảm ơn.Android Chuyển đổi màn hình hiện tại sang bitmap

+1

Vậy ảnh chụp màn hình? https://code.google.com/p/android-screenshot-library/ – shkschneider

+0

bạn thấy, tôi không muốn người dùng biết rằng ảnh chụp màn hình đã được chụp. Chỉ cần chụp màn hình tải nó vào một bitmap và sau đó thiết lập bitmap để xem hình ảnh – SynerFlow

Trả lời

9

Bạn có thể sử dụng một cái gì đó như thế này và thông qua cách bố trí như chế độ xem;)

public Bitmap takeScreenShot(View view) { 
     // configuramos para que la view almacene la cache en una imagen 
     view.setDrawingCacheEnabled(true); 
     view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_LOW); 
     view.buildDrawingCache(); 

     if(view.getDrawingCache() == null) return null; // Verificamos antes de que no sea null 

     // utilizamos esa cache, para crear el bitmap que tendra la imagen de la view actual 
     Bitmap snapshot = Bitmap.createBitmap(view.getDrawingCache()); 
     view.setDrawingCacheEnabled(false); 
     view.destroyDrawingCache(); 

     return snapshot; 
    } 
+0

ok, bộ nhớ cache sẽ làm gì? Tôi muốn chụp màn hình không chỉ một lần xem. Màn hình của tôi bị phân mảnh, có nhiều chế độ xem được phân phối trên các tệp bố cục xml, được hợp nhất với nhau trong một chế độ xem – SynerFlow

+0

Nếu bạn chuyển gốc bố cục hoặc chính, nó sẽ chụp nhanh những gì trên màn hình;) – jackgris

+0

? Bạn cần đọc [getDrawingCache] này (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris

0

View là bạn bố trí root: -

View v = view.getRootView(); 
v.setDrawingCacheEnabled(true); 
Bitmap b = v.getDrawingCache(); 
String extr = Environment.getExternalStorageDirectory().toString(); 
File myPath = new File(extr, getString(R.string.free_tiket)+".jpg"); 
FileOutputStream fos = null; 
try { 
    fos = new FileOutputStream(myPath); 
    b.compress(Bitmap.CompressFormat.JPEG, 100, fos); 
    fos.flush(); 
    fos.close(); 
    MediaStore.Images.Media.insertImage(getContentResolver(), b, "Screen", "screen"); 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (Exception e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

thấy liên kết để biết thêm: -

http://code.google.com/p/android-screenshot-library/wiki/DeveloperGuide

Android - How to take screenshot programatically

+0

có lẽ bạn đã không đọc bình luận ở trên của tôi. Tôi không muốn chụp ảnh màn hình. Chỉ cần đưa màn hình chuyển đổi nó thành bitmap và đặt nó thành 'ImageBitmap' của ImageView. – SynerFlow

0
View rootView = findViewById(R.id.relative_facebook).getRootView(); 
     rootView.setDrawingCacheEnabled(true); 
     return rootView.getDrawingCache(); 
Các vấn đề liên quan