Add print samples to the ApiDemos app.
1. Added a sample for printing a bitmap. 2. Added a sample for printing an on-screen WebView. 3. Added s sample for printing an off-screen WebView. 4. Fixed a bug in the custom layout print sample. Change-Id: I35b2bbf8c7fd9bc39be795b1f793d9ea7bdfc8a0
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package com.example.android.apis.app;
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import android.app.Activity;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.os.Bundle;
|
||||
import android.print.PrintManager;
|
||||
import android.support.v4.print.PrintHelper;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.webkit.WebView;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* This class demonstrates how to implement bitmap printing.
|
||||
* <p>
|
||||
* This activity shows an image and offers a print option in the overflow
|
||||
* menu. When the user chooses to print a helper class from the support
|
||||
* library is used to print the image.
|
||||
* </p>
|
||||
*
|
||||
* @see PrintManager
|
||||
* @see WebView
|
||||
*/
|
||||
public class PrintBitmap extends Activity {
|
||||
|
||||
private ImageView mImageView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.print_bitmap);
|
||||
mImageView = (ImageView) findViewById(R.id.image);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
getMenuInflater().inflate(R.menu.print_custom_content, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == R.id.menu_print) {
|
||||
print();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void print() {
|
||||
// Get the print manager.
|
||||
PrintHelper printHelper = new PrintHelper(this);
|
||||
|
||||
// Set the desired scale mode.
|
||||
printHelper.setScaleMode(PrintHelper.SCALE_MODE_FIT);
|
||||
|
||||
// Get the bitmap for the ImageView's drawable.
|
||||
Bitmap bitmap = ((BitmapDrawable) mImageView.getDrawable()).getBitmap();
|
||||
|
||||
// Print the bitmap.
|
||||
printHelper.printBitmap("Print Bitmap", bitmap);
|
||||
}
|
||||
}
|
||||
@@ -376,9 +376,9 @@ public class PrintCustomContent extends ListActivity {
|
||||
|
||||
// Add the height but if the view crosses the page
|
||||
// boundary we will put it to the next one.
|
||||
pageContentHeight += view.getHeight();
|
||||
pageContentHeight += view.getMeasuredHeight();
|
||||
if (currentPage < 0 || pageContentHeight > mRenderPageHeight) {
|
||||
pageContentHeight = view.getHeight();
|
||||
pageContentHeight = view.getMeasuredHeight();
|
||||
currentPage++;
|
||||
// Done with the current page - finish it.
|
||||
if (page != null) {
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.app;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.print.PrintManager;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* This class demonstrates how to implement HTML content printing
|
||||
* from a {@link WebView} which is shown on the screen.
|
||||
* <p>
|
||||
* This activity shows a simple HTML content in a {@link WebView}
|
||||
* and allows the user to print that content via an action in the
|
||||
* action bar. The shown {@link WebView} is doing the printing.
|
||||
* </p>
|
||||
*
|
||||
* @see PrintManager
|
||||
* @see WebView
|
||||
*/
|
||||
public class PrintHtmlFromScreen extends Activity {
|
||||
|
||||
private WebView mWebView;
|
||||
|
||||
private boolean mDataLoaded;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.print_html_from_screen);
|
||||
mWebView = (WebView) findViewById(R.id.web_view);
|
||||
|
||||
// Important: Only enable the print option after the page is loaded.
|
||||
mWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
// Data loaded, so now we want to show the print option.
|
||||
mDataLoaded = true;
|
||||
invalidateOptionsMenu();
|
||||
}
|
||||
});
|
||||
|
||||
// Load an HTML page.
|
||||
mWebView.loadUrl("file:///android_res/raw/motogp_stats.html");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
if (mDataLoaded) {
|
||||
getMenuInflater().inflate(R.menu.print_custom_content, menu);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == R.id.menu_print) {
|
||||
print();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void print() {
|
||||
// Get the print manager.
|
||||
PrintManager printManager = (PrintManager) getSystemService(
|
||||
Context.PRINT_SERVICE);
|
||||
// Pass in the ViewView's document adapter.
|
||||
printManager.print("MotoGP stats", mWebView.createPrintDocumentAdapter(), null);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (C) 2013 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package com.example.android.apis.app;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.print.PrintManager;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.webkit.WebView;
|
||||
import android.webkit.WebViewClient;
|
||||
|
||||
import com.example.android.apis.R;
|
||||
|
||||
/**
|
||||
* This class demonstrates how to implement HTML content printing
|
||||
* from a {@link WebView} which is not shown on the screen.
|
||||
* <p>
|
||||
* This activity shows a text prompt and when the user chooses the
|
||||
* print option from the overflow menu an HTML page with content that
|
||||
* is not on the screen is printed via an off-screen {@link WebView}.
|
||||
* </p>
|
||||
*
|
||||
* @see PrintManager
|
||||
* @see WebView
|
||||
*/
|
||||
public class PrintHtmlOffScreen extends Activity {
|
||||
|
||||
private WebView mWebView;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.print_html_off_screen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
super.onCreateOptionsMenu(menu);
|
||||
getMenuInflater().inflate(R.menu.print_custom_content, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == R.id.menu_print) {
|
||||
print();
|
||||
return true;
|
||||
}
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void print() {
|
||||
// Create a WebView and hold on to it as the printing will start when
|
||||
// load completes and we do not want the WbeView to be garbage collected.
|
||||
mWebView = new WebView(this);
|
||||
|
||||
// Important: Only after the page is loaded we will do the print.
|
||||
mWebView.setWebViewClient(new WebViewClient() {
|
||||
@Override
|
||||
public void onPageFinished(WebView view, String url) {
|
||||
// Get the print manager.
|
||||
PrintManager printManager = (PrintManager) getSystemService(
|
||||
Context.PRINT_SERVICE);
|
||||
// Pass in the ViewView's document adapter.
|
||||
printManager.print("MotoGP stats", mWebView.createPrintDocumentAdapter(),
|
||||
null);
|
||||
}
|
||||
});
|
||||
|
||||
// Load an HTML page.
|
||||
mWebView.loadUrl("file:///android_res/raw/motogp_stats.html");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user