我有一个根RelativeLayout
并尝试捕获整个视图,然后在捕获视图之前我正在改变某些视图的可见性。
我的问题是最近可见的项目不在绘图缓存的位图中。
顶部屏幕在位图中看起来很好但在底部屏幕的位置有一个黑色而不是以编程方式显示的视图(llTagline
)。在此代码执行后,llTagline
在屏幕上真的可见,但在位图中却不可见。
我已经看到很多关于在 SO 上绘制缓存的问题,但我的问题没有解决方案。
这是我的代码。
rlEditorParent
是我的活动的根布局,RelativeLayout
。
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
llBottomBar.setVisibility(View.GONE);
llTagline.setVisibility(View.VISIBLE);
mDrawerLayout.setVisibility(View.INVISIBLE);
llTopBar.setVisibility(View.INVISIBLE);
ivRemoveFinish.setVisibility(View.INVISIBLE);
rlEditorParent.invalidate();
rlEditorParent.setDrawingCacheEnabled(true);
rlEditorParent.destroyDrawingCache();
rlEditorParent.buildDrawingCache(true);
finalBitmap = rlEditorParent.getDrawingCache(true);
}};
我也试过
finalBitmap = Bitmap.createBitmap(rlEditorParent.getWidth(),
rlEditorParent.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(finalBitmap);
rlEditorParent.layout(rlEditorParent.getLeft(),
rlEditorParent.getTop(), rlEditorParent.getRight(),
rlEditorParent.getBottom());
rlEditorParent.draw(c);
我在应用中的真实屏幕是
我在finalBitmap中获得的是
答案 0 :(得分:0)
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
llBottomBar.setVisibility(View.GONE);
llTagline.setVisibility(View.VISIBLE);
mDrawerLayout.setVisibility(View.INVISIBLE);
llTopBar.setVisibility(View.INVISIBLE);
ivRemoveFinish.setVisibility(View.INVISIBLE);
rlEditorParent.invalidate();
rlEditorParent.setDrawingCacheEnabled(true);
rlEditorParent.buildDrawingCache(true);
finalBitmap = rlEditorParent.getDrawingCache(true);
rlEditorParent.destroyDrawingCache();
}};
试试这个。