2013-12-16 46 views
0

在我的Android應用程序中,我在背景中使用一個圖像,並使用一些箭頭圖像。我在XML中添加圖像象下面這樣:如何更改在Android應用程序中使用的圖像的顏色和陰影

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/backgroundimage" > 

    <LinearLayout 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="0.20" 
     android:background="@drawable/border" 
     android:gravity="center_horizontal" 
     android:weightSum="1" > 

     <TextView 
      android:id="@+id/textView11" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent"/> 
     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="@string/none" 
      android:gravity="right" 
      android:src="@drawable/navigation" /> 
    </LinearLayout> 

現在我想從Java代碼與一些提供顏色代碼改變圖像的顏色。圖像背景將接收一種顏色,紋理/陰影/實際圖像部分將接收另一種顏色。我聽說了有關獲取圖像alpha的一些信息,並在圖像上應用顏色來檢查白色和灰色的位置。不知道該怎麼做。

例如,我包含箭頭的圖像。我想將背景從白色改變爲不同的顏色,並將箭頭從另一種顏色改變。請建議。

enter image description here

此外,有沒有任何方法來改變顏色,如果圖像是在α模式,其中背景是透明的?

+0

那些誰給了這個帖子下來大關,如果他們能提供任何有用的鏈接到這個問題將非常感激。 – MSIslam

+0

這是令人驚訝的奇怪的**有人低估了這個問題,它肯定是一個錯誤點擊,微星。 – Fattie

回答

2

如果使圖像背景透明(白色部分),所以你必須只調用什麼是「圖像部分」可見,不是你可以通過改變背景無論是setBackground(Drawable)setBackgroundColor(color)setBackgroundResource(resource)(因爲背景將是通過圖像的透明部分可見)。

要更改實際圖像顏色,請使用setColorFilter(),此方法有三種不同的版本,因此您應該能夠找到適合您需求的版本。


要更改用作背景一個單一的形象,使基本圖像紅色和綠色(或其他一些不同的顏色不使用多種顏色通道。黑與白是行不通的),並得到它作爲Drawable。這是因爲Drawable可以有ColorFilter,就像ImageView一樣。給它一個ColorMatrixColorFilter

如果背景部分是紅色,前景綠色,然後你可以使用一個matrix

[bR, aR, 0, 0, 
0, bG, aG, 0, 
0, 0, bB, aB, 
0, 0, 0, bA, 
aA, 0, 0, 0] 

其中

background R,G,B,A = bR, bG, bB, bA 
foreground R,G,B,A = aR, aG, aB, aA 
+0

謝謝!它適用於imageview中的圖像。這非常有幫助!當我使用圖像作爲RelativeLayout或TextView的背景時,你能提出什麼建議嗎? – MSIslam

+0

@MSI我也爲此添加了一個示例。 – Jave

+0

謝謝!我不知道我將如何在這裏應用矩陣。我將從後端接收顏色代碼,並將我接收到的任何顏色代碼應用到背景圖像中。背景圖像不是黑白的,已經設置爲背景資源。我是這樣但不是很成功:LinearLayout MyView =(LinearLayout)findViewById(R.id.main); \t \t MyView.setBackgroundResource(R.drawable.bgpetals); \t \t Drawable dr = MyView。的getBackground(); \t \t dr.setAlpha(0); – MSIslam

相關問題