① android 中代碼定義顏色的幾種方式
Android開發中顏色的自定義方法
1、使用Color類的常量,如:
int color = Color.BLUE; // 創建一個藍色 是使用Android提供的顏色 int color = Color.RED; int color = Color.WHITE; 2、通過ARGB構建,如:
int color = Color.argb ( 127, 255, 0, 255 ); // 半透明的紫色
其中第一個參數表示透明,0表示完全透明,255(ff)表示完全不透明;後三位分別代表RGB的值了。 3、使用XML資源文件來定義顏色
該方法擴展性好,便於修改和共享,如在values目錄下創建一個color.xml: <?xml version=」 1.0」 encoding=」utf -8」> <resources>
<color name=」mycolor」> #7fff00ff</color> </resources>
定義了一個名為mycolor的顏色,在別的地方就可以通過引用mycolor來獲取該顏色值,如textView定義中:
android:textColor= "@drawable/mycolor"
java代碼中可以使用ResourceManager類中的getColor來獲取該顏色: int color = getResources().getColor(R.color.mycolor);
這與第二種方法得到的值是一樣的,getResources()方法返回當前活動Activity的ResourceManager類實例。
說明:XML定義方法接受6位和8位兩種表示法,而且開頭必須是#,8位定義時前兩位表示透明。 4、直接定義色值,如: int color = 0xff00ff00;
這種方法必須使用0x開頭,而不是用我們常用的#。與方法3不一樣,值也必須用8位表示 ,不接受6位的顏色表示。分組一下0x|ff|ff00ff,0x是代表顏色整數的標記,ff是表示透明度,ff00ff表示RGB顏色值。
=======================
補充一點Android布局中背景圖片的設置(編輯LinearLayout):
* 可以使用純色:android:background="@drawable/mycolor" (XML資源文件中定義的顏色)
* 也可使用圖片:android:background="@drawable/bg" (需要將一個名為bg.jpg或png的圖片拷貝到res/drawable-hdpi目錄下)。
② 引用Android的資源文件,為什麼在引用顏色資源時是:activity.getResource.getColor(),而引用字元串
activity繼承自context,getString在context中有實現,其結果也是會掉到Resource中去,但是context類中沒有實現getColor,所以得到Resource中去調,詳細的介面去看看context和Resource兩個累就明白了,主要Context的大部分介面都是在ContextImpl中實現的。
③ 在安卓(android)應用層上,不同的app如何共享主題(theme)、樣式(styles)、顏色(color)等資源。
建議下載R.E管理器查看源代碼(需要root許可權),
④ android第三方庫修改顏色
1、首先直接在布局文件中設置:android:backgound="#FFFFFFFF",android:textcolor="#00000000"。
2、其次把顏色提取出來形成資源,放在資源文件下面(values/drawable/color.xml):#FFFFFFFF
3、最後在布局文件中用android:backgound="@drawable/white"android:textcolor="@drawable/black"或者在java文件中通過setBackgroundColor(int color), setBackgroundResource(int resid),setTextColor(int color)即可。
⑤ android設置linearlayout布局的背景顏色,怎麼動態改變背景顏色
1、開始打開Android IDE,這里以常用的Android Studio軟體的3.2版本為例,然後可以新建一個工程項目,也可以使用當前已經存在的工程,點擊後等待整個項目載入完畢再進行後續的操作。
⑥ Android中TextView中的文字顏色設置setTextColor的用法
原文鏈接http://blog.csdn.net/u012532559/article/details/44925285
Android 中設置TextView的顏色有方法setTextColor,這個方法被重載了,可以傳入兩種參數。一種方法是傳入int color值,要注意這個int不是R文件中自動分配的十六進制int值,這是Color類中的靜態方法構造出來的顏色int值。另一種方法是通過ColorStateList得到xml中的配置的顏色的。好多需要xml中配置的都要類似這樣的映射xml文件(比如一個按鈕事件的選擇器,默認狀態為顏色A,點擊時狀態為顏色B等等選擇效果)。
setTextColor的兩種重載方法如下:
[java] view plain
publicvoidsetTextColor(intcolor) {
mTextColor = ColorStateList.valueOf(color);
updateTextColors();
}
publicvoidsetTextColor(ColorStateList colors) {
if(colors ==null) {
thrownewNullPointerException();
}
mTextColor = colors;
updateTextColors();
}
第一種重載方法有以下實現方式:
方法一:通過ARGB值的方式
textview.setTextColor(Color.rgb(255,255, 255));
textview.setTextColor(Color.parseColor("#FFFFFF"));
方法二:通過資源引用
textview.setTextColor(mContext.getResources().getColor(R.drawable.contact_btn_text_red))
#f2497c
第二種重載方法的實現:
[java] view plain
textview.setTextColor(mContext.getResources().getColorStateList(R.drawable.big_btn_text_color));
選擇器big_btn_text_color.xml
[html] view plain
⑦ 關於Android顏色資源
R.color.red 這個是red的ID,不是你要的color,
Resources r = this.getResources();
r.getColor(R.color.red ) 這個才是顏色
⑧ Android 12 取色引擎相關問題
其實WallpaperManager從很早之前就提供了getWallpaperColors介面
==Tip: LocalWallpaperColorConsumer是hide介面,非源碼編譯的Apk無法引用==
取出的數據都封裝在WallpaperColors中,可通過以下介面獲取到原始數據
框架中只是負責提取出原始顏色 ,但有些時候直接使用原始顏色,並不能達到最好的效果。
例如:PixelLauncher的插件實現顏色動態變化,除了從Wallpaper中拿到顏色,還進行了二次加工,使其更符合Material Desgin的風格,這也是符合「Monet」主題系統 中的一部分,目前是沒有開源的。所以一方或三方若想使用該特性,可以按需進行選擇和二次加工。
很可惜,Google並沒有為動態壁紙提供默認的取色邏輯。
壁紙的取色,最終會調用到WallpaperService的onComputeColors中,但該方法是空實現,框架只是提供了最基本的獲取介面而已。
所以在Android 12之前,無論是靜態壁紙或是動態 壁紙,若想要其他模塊能獲取到壁紙顏色的話,需要壁紙提供方,在實現WallpaperService的Engine時,也一並實現onCompleteColors方法,然後在顏色變化時調用notifyColorsChanged。
如圖:
壁紙其實是通過Palette介面進行顏色提取的,基本上都能取到至少一種顏色。當真的取出失敗或取出的顏色如果不符合期望,需要採用另外一套默認顏色,這是由各個各個業務去處理的,比如Launcher中的LauncherAppWidgetHostView,重寫了setColorResources方法
具體流程見下圖:
PixelLauncher是通過LocalWallpaperColorsExtractor的實現類進行顏色提取,該類繼承於LocalColorExtractor,該類存在於Launcher3中,是空實現。可以看出,Google專門將Monet演算法部分折分隱藏,只公開框架部分。
而LocalWallpaperColorsExtractor是通過調用WallpaperManager.addOnColorsChangedListener介面,獲取onColorsChanged(RectF rectF, WallpaperColors wallpaperColors)中的返回信息,然後再對WallpaperColors中的顏色信息進行二次加工處理。
可以,Android 12已經在secure表中預定義了theme_customization_overlay_packages欄位,在其中配置了是否要根據主屏幕變色還是預置顏色,然後進行資源Overlay的。
我們可以直接使用或借鑒這套邏輯,預置幾套色值,並設置為使用基本顏色。
⑨ Android Studio如果希望在XML布局文件中調用顏色資源,可以使用( )調用
在xml中調用顏色可以直接使用@color/color_name直接調用
有心的話你應該也能看到或者可以想到,顏色是這么調用,同樣String也是這么調用