2014-04-25 2 views
5

내 앱의 화면을 변환하여 Bitmap으로 변환하고 싶습니다. 이미 비트 맵으로 뷰를 변환하는 방법을 알고 있지만, 화면이 많은 조각으로 구성되어 있기 때문에 원하는 것은 아닙니다. 따라서 나는 스크린을 가져 와서 비트 맵으로 변환 할 수 있기를 원합니다 ... 도움말 덕분에 감사드립니다.Android 현재 화면을 비트 맵으로 변환

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

더 많은 정보를 원하시면 링크를 참조 : - -이 :

+1

그래서 스크린 샷? https://code.google.com/p/android-screenshot-library/ – shkschneider

+0

화면이 캡처되었음을 사용자가 알 필요가 없습니다. 화면을 비트 맵에로드 한 다음 비트 맵을 이미지보기 – SynerFlow

답변

9

당신은이 같은 것을 사용하고 레이아웃을 전달할 수 보기);

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

오케이, 드로잉 캐시는 무엇을합니까? 단일 화면뿐만 아니라 화면을 캡처하고 싶습니다. 내 화면이 조각 났으며 여러보기가 XML 레이아웃 파일에 분산되어 하나의보기로 병합되었습니다. – SynerFlow

+0

레이아웃 루트 또는 주를 전달하면 화면에있는 항목의 스냅 샷을 얻습니다.) – jackgris

+0

도면 캐시를 얻는 방법 ? 이 [getDrawingCache] (http://developer.android.com/reference/android/view/View.html#getDrawingCache%28boolean%29) – jackgris

0
View rootView = findViewById(R.id.relative_facebook).getRootView(); 
     rootView.setDrawingCacheEnabled(true); 
     return rootView.getDrawingCache(); 
관련 문제