我已经审核并尝试过多个版本的此问题无济于事。我早在2011年和最近的2014年中期就已经看到了答案。不幸的是,许多部分答案和解释不当的建议创造了更多问题而不是答案。我在iTunes App Store中提供了一个Apple应用程序,可以执行我尝试使用此Android应用程序执行的所有操作。在Apple App世界中,查看pdf文件相对容易执行,但我很难在Android中完成它。我承认我在创建Android应用程序方面的经验非常有限。
问题是我有一个主要活动的Android应用程序,它有一个ListView,列出了大约35个pdf格式图表的标题。这些中的每一个都是可点击的,以便在全屏活动(视图)中查看。每个pdf是半页宽度,长度从1/2页到2页不等。所以新活动(pdf视图)需要可滚动。由于这是用于手机或平板电脑的应用程序,因此新活动(pdf视图)需要可缩放。在用户完成对pdf的查看后,他们将需要一个选项来返回主活动。然后,用户可以选择另一个图表进行查看。
我已经完成的事情是: - 主要活动图表标题的列表视图 - 为ListView中的每个条目启用监听器 - 访问新活动(pdf视图) - 使用putExtras - getExtras进行变量传递,正在运行
一些代码(来自main activity.java):
@Override
public void onClick(View v) {
String scroll_page = new String("CommonVehicleCodeViolations.pdf");
Intent intent = new Intent(this, scroll_view.class);
intent.putExtra("extra_scroll_page", scroll_page);
startActivity(intent);
}
图表标题是硬编码用于测试目的。现在,来自新活动的一些代码(pdf视图)'scroll_view.java':
public class scroll_view extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scroll_view);
Bundle extras = getIntent().getExtras();
String scroll_page = null;
if (extras != null) {
scroll_page = extras.getString("extra_scroll_page");
}
int currentPage = 1;
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Bitmap bitmap = Bitmap.createBitmap(500,500, Bitmap.Config.ARGB_4444);
try {
File file = new File(getFilesDir(), scroll_page);
PdfRenderer renderer = new PdfRenderer(ParcelFileDescriptor.open(file,ParcelFileDescriptor.MODE_READ_ONLY));
if(currentPage < 0) {
currentPage = 0;
} else if (currentPage > renderer.getPageCount()) {
currentPage = renderer.getPageCount() - 1;
}
renderer.openPage(currentPage).render(bitmap, new Rect(0, 0, 500, 500), new Matrix(),PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
imageView.setImageBitmap(bitmap);
imageView.invalidate();
} catch (IOException e) {
e.printStackTrace();
}
这是尝试使用许多已经发布的答案之一,建议使用PdfRenderer。我从这个例子得到的是新活动(pdf视图)空白屏幕。我希望2015年会带来新的答案。请帮忙。
答案 0 :(得分:1)
为什么不尝试使用意图,让系统显示兼容的应用列表:
File file = new File(getFilesDir(), scroll_page);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(intent);