androidのPDF関連のクラスを使ってViewをPDFファイル出力で使ったソースの一部です。
オプションメニューにボタンを追加して、それを押すと
バックグラウンドで、PDFファイルを作成します。
PDFファイル作成の負荷で、処理が時間がかかるためバックグラウンド(Thread)にしています。
@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // TODO 自動生成されたメソッド・スタブ super.onCreateOptionsMenu(menu, inflater); MenuItem mitem0 = menu.add(Menu.NONE,0,0,"PDF出力"); } @Override public boolean onOptionsItemSelected(MenuItem item) { // TODO 自動生成されたメソッド・スタブ int id = item.getItemId(); switch (id) { case 0: /* PDF出力 バックグランドで実行 */ new Thread(new Runnable() { @Override public void run() { outputPDF(); } }).start(); break; case 1: break; default: break; } return super.onOptionsItemSelected(item); } private void outputPDF() { final String FILENAME = "output.pdf"; File fileMemo = null; // String sdPath; //外部ストレージの現在の状態をチェック String state = Environment.getExternalStorageState(); //マウントされていて読み書きが可能かどうか確認 if(Environment.MEDIA_MOUNTED.equals(state)){ Log.v("読み書き","読み書き可能"); //外部ストレージのパスを取得 File extDir = Environment.getExternalStorageDirectory(); sdPath = extDir.getPath(); //保存先のパス String savePath = File.separator +"Download"+File.separator+ getActivity().getPackageName()+File.separator+ FILENAME; sdPath += savePath; Log.v("保存先",""+sdPath); //フォルダ作成 fileMemo = new File(sdPath); fileMemo.getParentFile().mkdirs(); }else{ Log.v("エラー","エラー読み書き不可"); return; } Log.v("START","STart Creating PDF File"); FileOutputStream fileOutputStream=null; try { fileOutputStream = new FileOutputStream(fileMemo,true); } catch (FileNotFoundException e) { e.printStackTrace(); } PdfDocument document = new PdfDocument(); PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(1080, 1920,1).create(); PdfDocument.Page page = document.startPage(pageInfo); //View content = v.findViewById(R.id.scrolling_graph_1); v.draw((page.getCanvas())); document.finishPage(page); try { document.writeTo(fileOutputStream); } catch (IOException e) { e.printStackTrace(); } // close the document document.close(); Log.v("END","Finished Creating PDF File"); }