在加载PDF文档时,可以使用以下代码来提高Drawable的质量:
PdfRenderer renderer = new PdfRenderer(getSeekableFileDescriptor());
PdfRenderer.Page page = renderer.openPage(pageNumber);
int width = page.getWidth();
int height = page.getHeight();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Rect rect = new Rect(0, 0, width, height);
page.render(bitmap, rect, null, PdfRenderer.Page.RENDER_MODE_FOR_DISPLAY);
imageView.setImageDrawable(new BitmapDrawable(getResources(), bitmap));
page.close();
renderer.close();
其中,通过设置bitmap的Config为ARGB_8888可以提高质量。同时,也可以通过设置rect的大小来控制Drawable的大小。
另外,也可以在加载Drawable时设置quality参数,来调整质量。例如:
TypedValue typedValue = new TypedValue();
getResources().getValue(R.drawable. drawable_resource, typedValue, true);
if (typedValue.density == TypedValue.DENSITY_DEFAULT) {
options.inDensity = DisplayMetrics.DENSITY_DEFAULT;
} else if (typedValue.density != TypedValue.DENSITY_NONE) {
options.inDensity = typedValue.density;
}
options.inTargetDensity = getResources().getDisplayMetrics().densityDpi;
options.inScaled = true;
options.inSampleSize = 1;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
options.inMutable = true;
options.inBitmap = null;
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.drawable_resource, options);
imageView.setImageDrawable(new BitmapDrawable(getResources(), bitmap));
在这个例子中,设置了图片的Config为ARGB_8888,同时也设置了quality参数。