2013-04-20 24 views
9

W mojej aplikacji mam widok ze szczegółami klienta, chcę zapisać ten widok jako obraz lub PDF na karcie SD, a następnie wydrukować widok za pomocą aplikacji innej firmy (w przeciwnym razie wydrukuj ten widok bezpośrednio za pomocą drukarki).Jak zapisać widok układu jako obraz lub pdf na kartę SD w systemie Android?

Nie mam pojęcia, jak zapisać widok jako obraz lub PDF. Czy ktokolwiek może mi pomóc, pomóż mi rozwiązać ten problem?

+0

Sprawdź ten link http://stackoverflow.com/questions/9868604/how-do-i-take-a-screenshot-of-an-android-lay na zewnątrz. –

+1

@HirenDabhi otrzymałem obraz za pośrednictwem tego kodu, jaki link podałeś, jak go zapisać na karcie SD. – Yugesh

+1

zaznacz ten link, aby zapisać mapę bitową na sdcard. http://stackoverflow.com/questions/4263375/android-saving-created-bitmap-to-directory-on-sd-card –

Odpowiedz

15

Dodaj zgodę w pliku manifestu

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Użyj kodu poniżej

LinearLayout content = findViewById(R.id.rlid); 
content.setDrawingCacheEnabled(true); 
Bitmap bitmap = content.getDrawingCache(); 
File file,f;      
if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) 
    { 
     file =new File(android.os.Environment.getExternalStorageDirectory(),"TTImages_cache"); 
     if(!file.exists()) 
     { 
      file.mkdirs(); 

     } 
     f = new File(file.getAbsolutePath()+file.seperator+ "filename"+".png"); 
    } 
    FileOutputStream ostream = new FileOutputStream(f);         
    bitmap.compress(CompressFormat.PNG, 10, ostream); 
    ostream.close(); 

} 
catch (Exception e){ 
e.printStackTrace(); 
} 
+0

jaka jest ** nazwa ** w Kodowaniu plików w twojej odpowiedzi. – Yugesh

+0

nazwa_pliku to nazwa, z której ma zostać zapisany obraz. Użyłem zakodowanej na stałe ścieżki, którą redagowałem powyżej. – Raghunandan

+0

'f = new Plik (plik," nazwa pliku "+. Png);' pokazuje błąd w .png. – Yugesh

0

Nad pracą kod poprawnie, ale obrazu nadpisanie z powodu samej nazwy tak, aby uniknąć tego problemu dodać poniżej linii:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss"); 

Date now = new Date(); 

String fileName = formatter.format(now); 

f = new File(file.getAbsolutePath()+file.separator+ "image_"+fileName+".png"); 
Powiązane problemy