如何在不丢失质量的情况下屏幕拍摄ImageView

时间:2014-11-28 06:13:28

标签: android screenshot

我在RelativeLayout中有一个ImageView,第一个与RelativeLayout大小一样大(如bg),第二个ImageView有一个小图像,现在我想通过截图将这些与ImageView的图像合并为一个(不是直接组合两个位图。

在下面的代码片段中,我获取了RelativeLayout的截图,它成功了, 但是我发现图像质量不如第一个ImageView的位图 ,任何人都可以请帮帮我?

view.setDrawingCacheEnabled(true);
view.setDrawingCacheBackgroundColor(Color.TRANSPARENT);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap drawCache = view.getDrawingCache(true);

2 个答案:

答案 0 :(得分:1)

使用此

 **public static Bitmap loadBitmapFromView(View v, int width, int height) {
        Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);                
        Canvas c = new Canvas(b);
        v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
        v.draw(c);
        return b;
    }

或使用此

    Bitmap bitmap;
    View v1 = mCurrentUrlMask.getRootView();

View v1 = getWindow().getDecorView().getRootView();//this line for get better result

    v1.setDrawingCacheEnabled(true);
    bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);**

这对我有用

答案 1 :(得分:0)

尝试使用DecorView窗口获取位图:

View window = activity.getWindow().getDecorView()

Canvas bitmapCanvas = new Canvas();
Bitmap bitmap = Bitmap.createBitmap(window.getWidth()*2, window.getHeight()*2, Bitmap.Config.ARGB_8888);

bitmapCanvas.setBitmap(bitmap);
bitmapCanvas.scale(2.0f, 2.0f);
window.draw(bitmapCanvas);

bitmap.compress(Bitmap.CompressFormat.PNG, 0, myOutputStream);

参考:High resolution screen shot in Android