中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何自定義漸變顏色效果

發布時間:2022-04-15 16:17:05 來源:億速云 閱讀:282 作者:iii 欄目:編程語言

這篇文章主要講解了“Android中如何自定義漸變顏色效果”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Android中如何自定義漸變顏色效果”吧!

xml定義漸變顏色

首先,你在drawable目錄下寫一個xml,代碼如下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
  android:shape="rectangle" >
  <gradient
    android:angle="270"
    android:endColor="#000000"
    android:startColor="#ffffff" />
  <corners
    android:bottomLeftRadius="5dip"
    android:bottomRightRadius="5dip"
    android:topLeftRadius="5dip"
    android:topRightRadius="5dip" />
</shape>

shape 節點配置的是圖形的形式,主要包括方形、圓形等,上邊代碼為方形,
gradient 節點主要配置起點顏色、終點顏色及中間點的顏色、坐標、漸變效果(0,90,180從左到右漸變,270從上到下漸變)默認從左到右
padding 節點主要配置上下左右的間距
corners 節點配置四周園腳的半徑

然后,你就可以隨意在代碼中或者xml布局中使用它了。

如此簡單的配置,只要你知道顏色的rgb值,你就可以成為顏色達人。

代碼定義漸變顏色

Android平臺下實現漸變效果。在android.graphics中我們可以找到有關Gradient字樣的類,比如LinearGradient 線性漸變、RadialGradient徑向漸變和 角度漸變SweepGradient 三種,他們的基類為android.graphics.Shader。為了顯示出效果,使用一個簡單的例子來說明。

一、LinearGradient線性漸變

在android平臺中提供了兩種重載方式來實例化該類分別為,他們的不同之處為參數中第一種方法可以用顏色數組,和位置來實現更細膩的過渡效果,比如顏色采樣int[] colors數組中存放20種顏色,則漸變將會逐一處理。而第二種方法參數僅為起初顏色color0和最終顏色color1。

LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)
LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)

使用實例如下:

Paint p=new Paint();
LinearGradient lg=new LinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR);

參數一為漸變起初點坐標x位置,參數二為y軸位置,參數三和四分辨對應漸變終點,最后參數為平鋪方式,這里設置為鏡像.

剛才Android開發網已經講到Gradient是基于Shader類,所以我們通過Paint的setShader方法來設置這個漸變,代碼如下:

p.setShader(lg);
canvas.drawCicle(0,0,200,p); //參數3為畫圓的半徑,類型為float型。

二、 RadialGradient鏡像漸變

有了上面的基礎,我們一起來了解下徑向漸變。和上面參數唯一不同的是,徑向漸變第三個參數是半徑,其他的和線性漸變相同。

RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile)
RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile)

三、 SweepGradient角度漸變

對于一些3D立體效果的漸變可以嘗試用角度漸變來完成一個圓錐形,相對來說比上面更簡單,前兩個參數為中心點,然后通過載入的顏色來平均的漸變渲染。

SweepGradient(float cx, float cy, int[] colors, float[] positions)

對于最后一個參數SDK上的描述為:

May be NULL. The relative position of each corresponding color in the colors array, beginning with 0 and ending with 1.0. If the values are not monotonic, the drawing may produce unexpected results. If positions is NULL, then the colors are automatically spaced evenly.

所以Android123建議使用下面的重載方法,本方法一般為NULL即可。

SweepGradient(float cx, float cy, int color0, int color1)

或者直接創建一個drawable:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE); //設置沒標題
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN , //全屏
           WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.login);//登錄界面
    GradientDrawable grad = new GradientDrawable(//漸變色
      Orientation.TOP_BOTTOM,
      new int[]{Color.BLACK, Color.WHITE}
    );
    getWindow().setBackgroundDrawable(grad);//設置漸變顏色
}

感謝各位的閱讀,以上就是“Android中如何自定義漸變顏色效果”的內容了,經過本文的學習后,相信大家對Android中如何自定義漸變顏色效果這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

焦作市| 达拉特旗| 尉氏县| 翁牛特旗| 台江县| 新安县| 通化市| 永善县| 陇川县| 杨浦区| 天柱县| 泰顺县| 桃园县| 铅山县| 兴仁县| 和硕县| 抚松县| 龙海市| 通山县| 新和县| 北安市| 福建省| 济阳县| 博罗县| 舞钢市| 新余市| 图们市| 芒康县| 德格县| 从化市| 上杭县| 曲沃县| 桃园县| 信丰县| 霍州市| 遵义县| 虹口区| 九龙县| 安义县| 天峨县| 赤峰市|