2017-07-17 51 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