2017-07-17 21 views
0

我正在尝试拍摄一个视图的“屏幕截图”,然后在不同的活动中再次使用它。问题是,当我这样做时,特定的颜色似乎会变得混乱。Android View.draw(画布)导致颜色不一致

其他备注:

  • 该图像由一个灰色基本图像的,与红色或绿色与α值的覆盖图像上。

    • 该视图通过设置充气器显示在父视图中。换句话说,我有一个布局,并在其中我有一个部分

    <!-- THIS GUY HERE needs to be set to show the correct view.--> <RelativeLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/my_id" />

和在活动我然后加载像这样正确的视图:

imagesLayout = (RelativeLayout) findViewById(R.id.my_id); 
LayoutInflater layoutInflater = (LayoutInflater) 
      this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
layoutInflater.inflate(getContentViewID(), imagesLayout); 

这里是我的代码来创建图像:

Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), 
view.getMeasuredHeight(), Bitmap.Config.ARGB_8888); 
Canvas bitmapHolder = new Canvas(bitmap); 
view.draw(bitmapHolder); 
return bitmap; 

和这是结果(较小的图像是不正确的,更大一个是视图):

enter image description here

回答

0

您可以保存布局的实例,并将其保存为位图。

+0

你好!对不起,我不确定你的意思(我仍然是一个新手)?有一些文档或我可以看的东西吗? – Zee

+0

O,只是正常的saveInstanceState?问题是我试图创建一个位图的布局是在另一个布局内。我会更新我的问题,以扩展更多。 – Zee

0

我找到了解决方案!事实证明,我不需要使用ARGB_8888,而需要使用RGB_565。在这篇文章的帮助下找出它:http://android.nakatome.net/2010/04/bitmap-basics.html

真的希望这可以帮助别人在未来。

+0

好的等待,它只解决了一些情况。还有其他建议吗? – Zee

+0

看来问题在于我的RED值在覆盖层上太高。如此明亮的部件会导致图像变蓝。我降低了R值,现在看起来工作正常(同时使用RGB565和ARGB8888) – Zee