2017-01-05 59 views
0

首先:我是一個真正的編程的菜鳥。我相信我可以理解代碼的功能,因爲我曾經習慣於將一些代碼語言當做愛好,並花費數十個小時與Rainmeter合作。就這樣你被告知我需要一些基本的解釋從哪裏開始,以及如何獲得任何可能的代碼運行。 非常感謝您對我的耐心等待。Android - 動態覆蓋圖標顏色

我想要做的事實際上應該很簡單:我想在我的屏幕和應用程序抽屜上使用的應用程序圖標上創建疊加層,根據專輯封面的AccentColor動態調整圖像的顏色或顏色。這聽起來很奇怪,但當你看看這個screenshot或這個one時,你會明白。你可以看到:我的圖標基本上是白線,其他的都是透明的。如果你想知道:這是不可思議的叫Lines。 現在,我已經閱讀了這個論壇上的一堆線索,並通過一些網上瀏覽類似的東西的教程,但我真的無法得到它的竅門。所以 - 即使我知道這個網站主要是程序員使用 - 我想我會在這裏明確地找到一個解決方案。我在OnePlus 3T上運行OxygenOS 4.0(7.0.0牛軋糖),解鎖&紮根。使用Nova Launcher。

如果你花時間爲我解決問題,我會誠實地感謝。

編輯:同時我發現this,但我不知道如何使用它對我?我無法真正理解這一點。我仍然不明白我該如何運行它?我需要創建一個XML文件嗎?我該如何運行?從我在網上閱讀的內容看,似乎我不得不創建一個全新的應用程序來運行這幾行代碼?我不能將這些添加到已經存在的特定XML中嗎?

回答

1

您可以使用imageView.setColorFilter(Color.parseColor("#FF00000"));

此方法適用於所有Android設備一路API 1.

但是,如果你的目標API 21(棒棒堂)或更高版本可以使用ImageView#setImageTintList這需要一個ColorStateList,它具有額外的優勢,您可以控制基於各種狀態的着色,如pressedfocused等。

使用方法:使用Android應用程序KLWP和KLWP Icon Plugin

<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item 
     android:color="hex_color" 
     android:state_pressed=["true" | "false"] 
     android:state_focused=["true" | "false"] 
     android:state_selected=["true" | "false"] 
     android:state_checkable=["true" | "false"] 
     android:state_checked=["true" | "false"] 
     android:state_enabled=["true" | "false"] 
     android:state_window_focused=["true" | "false"] /> 
</selector> 
+1

對於大多數答案,添加一個解釋來展示代碼的工作原理是一個好主意,這有助於編程經驗較少的其他人理解代碼的作用。 –

+0

@Rolfツ我同意答案應儘可能詳細,但我不知道我怎麼能詳細說明這一點。從我認爲的方法名稱來看非常直觀。如果你可以讓我知道什麼是缺失的,我會很樂意編輯我的答案,以添加相關的細節 – akash93

+0

有更多的方法來做到這一點,不僅通過設置一個ImageView的顏色過濾器。提問者爲什麼要使用這種方法?有什麼選擇?您也可以將他指向文檔以供進一步參考。 –

0

我找到了一個解決辦法(無編碼):imageView.setImageTintList(AppCompatResources.getColorStateList(context, R.color.color_selector));

其中color_selector模樣。 我所做的是:

  1. 使用圖標插件和IconPack你想要的(在我的情況Lines)用來找到你想要的主屏幕上的圖標,並點擊他們得到的公式。
  2. 在KLWP中,創建一個位圖元素並選擇圖片選擇器的框,然後點擊右上角的計算器圖標,以便能夠將公式(實際上只是該圖標的一個目錄)插入位圖元件。 Screenshot
  3. 接下來添加一個colourize過濾器,並打勾它準備好公式並插入下面的公式。它會根據當前專輯封面藝術基本色調位圖。

    $如果(TC(LEN,沸點(lmuted,MI(蓋)))= 9,沸點(lmuted,MI(蓋)),沸點(lvibrant,MI(蓋)))$

  4. 接下來,使用位置標籤以精確地放置在它原來的應用程序圖標,現在你有兩個選擇:

  5. A)你只是刪除原來的圖標,並添加觸摸 -elements的位圖,讓他們運行相應的應用。這有一個開放的應用程序需要較長時間的下跌,你不能選擇的開場動畫(它甚至沒有設置爲系統默認的,所以它只是應用程序是拉昇

    B)(recomended)您下載this icon pack和使用它來改變你的主屏幕圖標爲那些空的位圖,以便它們基本上通過你的啓動器是不可見的(這在Nova中是非常直接的,不知道其他啓動器)。這有一個好處,開放速度和動畫保持不變,因爲這些變化只是一種美化。

Here是多麼的成品外觀的一些例子(取決於屏幕對比度&顏色設置的差異可能不是那麼明顯)。

我希望能幫助別人。並感謝akash93花時間以編程方式向我解釋。