Android護眼模式功能小記

2021-08-06 07:30:09 字數 1369 閱讀 6143

最近自己在做乙個**閱讀器,看到某閱有護眼模式功能,別人都有,我怎麼能沒有?

現在這功能已經不稀奇了,很多手機都帶有這個功能。

實現起來不難,用乙個蒙版遮在介面上面就行。

至於蒙版,可以用window實現,也可以只用套個framelayout實現。

window實現的優點是,支援全域性,切可以覆蓋狀態列。缺點是需要許可權宣告,而懸浮窗許可權在國內這些手機上相當不好搞,需要適配很多機型。

我選擇的是framelayout,因為我只需要在閱讀頁面實現護眼模式。

蒙版有了,接下來只需要給蒙版設定乙個顏色。這個顏色使得讓螢幕看起來發黃,然後這個功能就成了。(老實說,我對這功能是否真的有保護眼睛的作用表示懷疑)

可是顏色並不是我擅長的。我不知道怎麼搭配紅綠藍可以得到乙個讓螢幕看起來略微發黃的顏色。

這時候,就該展現搜尋引擎的威力了。畢竟我們要學會站在巨人的肩膀上。

我開啟了google,搜尋了「護眼模式」、「護眼模式原理」、「android 護眼模式原理」等等都沒有得到想要的結果,全是一些亂七八糟的新聞,要不就是廣告。

不過我沒有絕望,因為我很堅強。

反編譯之後,發現是這個樣子的..

不過你混淆的了**,你混淆的了manifest嗎?

開啟manifest,不出所料,使用的懸浮窗許可權:

這樣事情就變得簡單了。全域性搜尋getsystemservice("window")就找到了其使用windowmanager的地方,然後一步步跟下去,終於找到其設定背景顏色的地方。

/**

* 過濾藍光

* @param bluefilterpercent 藍光過濾比例[10-80]

* */

public static @colorint int getcolor(int bluefilterpercent)

else if (realfilter > 80)

int a = (int) (realfilter / 80f * 180);

int r = (int) (200 - (realfilter / 80f) * 190);

int g = (int) (180 - ( realfilter / 80f) * 170);

int b = (int) (60 - realfilter / 80f * 60);

return color.argb(a, r, g, b);

}

一般bluefilterpercent給個30左右的值就可以了。

貼兩張效果圖。

開啟護眼模式前:

開啟護眼模式後:

效果還是有。

部落格:

Android護眼模式功能小記

最近自己在做乙個 閱讀器,看到某閱有護眼模式功能,別人都有,我怎麼能沒有?現在這功能已經不稀奇了,很多手機都帶有這個功能。實現起來不難,用乙個蒙版遮在介面上面就行。至於蒙版,可以用window實現,也可以只用套個framelayout實現。window實現的優點是,支援全域性,切可以覆蓋狀態列。缺點...

護眼模式 護眼模式只是心理安慰嗎?

數碼產品如今已經完全滲透進人們的日常生活,在給人們帶來便利和愉悅的同時,卻也悄然而至。為了解決這種困擾,越來越多人性化功能來到現代人身邊,其中,護眼模式 就是其中之一。一些電子產品推出了 護眼模式 這讓不少人覺得刷起手機來更加心安理得了。你看我用了護眼模式,不傷眼的 只要開啟護眼模式,就可以護眼,這...

護眼模式 真相!「護眼模式」有用嗎

都說看手機一時爽,一直看手機一直爽!但對於眼睛來說,看手機久了真的不舒服 雖然大部分手機都能開啟 護眼模式 但是 護眼模式 真的有用嗎?手機 護眼模式 真的可以護眼嗎?答案是可以的!手機 護眼模式 可以過濾一部分藍光 降低螢幕對眼睛的傷害 開啟了 護眼模式 等同於眼睛不再受到傷害了嗎?答案自然是否定...