2017-09-14 187 views
1

如何在屏幕截图中勾勒活动布局中的阴影或视图高度。此代码为视图截取屏幕截图,但不会在此显示viewsenter图片说明的阴影Android如何在屏幕截图中捕获阴影

View screenView = parentMain; 
    screenView.buildDrawingCache(); 
    screenView.setDrawingCacheEnabled(true); 
    Bitmap bitmap = Bitmap.createBitmap(screenView.getWidth() , screenView.getHeight(), Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(bitmap); 
    screenView.layout(0, 0, screenView.getLayoutParams().width, screenView.getLayoutParams().height); 
    screenView.draw(c); 
    screenView.setDrawingCacheEnabled(false); 
    fakeImgView.setImageBitmap(bitmap); 

enter image description here

结果

enter image description here

+0

尝试将图像保存到存储目录中,然后将该图像设置为图像视图。 –

+0

看到我的回答,先生希望这会帮助你。 –

回答

1

试试这个。

CardView card = (CardView) findViewById(R.id.card); 

现在只需将卡片传递给captureScreenShot()即可。它返回位图并保存该位图saveImage()。

您可以传递任何视图像RelativeLayout,LinearLayout等任何视图都可以传递给captureScreenShot()。

// Function which capture Screenshot 
public Bitmap captureScreenShot(View view) { 
    /* 
    * Creating a Bitmap of view with ARGB_4444. 
    * */ 
    Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_4444); 
    Canvas canvas = new Canvas(bitmap); 
    Drawable backgroundDrawable = view.getBackground(); 

    if (backgroundDrawable != null) { 
     backgroundDrawable.draw(canvas); 
    } else { 
     canvas.drawColor(Color.parseColor("#80000000")); 
    } 
    view.draw(canvas); 
    return bitmap; 
} 

// Function which Save image. 
private void saveImage(Bitmap bitmap) { 
    File file = // Your Storage directory name + your filename 
    if (file == null) { 
     return; 
    } 
    try { 
     FileOutputStream fos = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos); 
     fos.close(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

终于像这样调用这个函数。

saveImage(captureScreenShot(card)); 

现在设置你的形象像这样。

File file = new File(“yourImageFilePath”); 
if(file.exists()) 
{ 
    yourImageView.setImageURI(Uri.fromFile(file)); 
} 

注意:如果setImageURI()不起作用,那么您可以使用下面的代码。

File file = new File(“yourImageFilePath”); 
if(file.exists()) 
{ 
    Bitmap bitmap = BitmapFactory.decodeFile(file.toString()); 
    yourImageView.setImageBitmap(bitmap); 
} 
+0

没有工作:/ –