Android Paint 高階常用API梳理

2021-09-26 19:18:14 字數 3366 閱讀 2263

paint還是比較複雜的,這裡只是一些常見的api舉例。

**結構很簡單,自定義乙個gradientlayout繼承自view,mainactivity的setcontentview(new gradientlayout(this))。核心的api全部在gradientlayout中。

1.首先是gradientlayout的建構函式,相信各位老司機一看就懂:

public gradientlayout(context context) 

public gradientlayout(context context, @nullable attributeset attrs)

public gradientlayout(context context, @nullable attributeset attrs, int defstyleattr)

2.成員變數一共3個

private paint mpaint; //畫筆

private shader mshader;//渲染器,下面有具體的用法

private bitmap mbitmap;//bitmap

3.init方法,init是構造方法中執行的,主要是對畫筆做一些初始化工作,其中api都有詳細的注釋

private void init()
4.畫筆初始化結束後,在ondraw方法中進行繪製,這裡只是簡單舉例,可能**的位置放的不太合適

@override

protected void ondraw(canvas canvas) , new float, shader.tilemode.repeat);

mpaint.setshader(mshader);

canvas.drawcircle(200, 200, 200, mpaint);

// canvas.drawrect(0, 0, 1000, 1000, mpaint);

*/ /* *//**

* 環形渲染,radialgradient(float centerx, float centery, float radius, @colorint int colors, @nullable float stops, tilemode tilemode)

* centerx ,centery:shader的中心座標,開始漸變的座標

* radius:漸變的半徑

* centercolor,edgecolor:中心點漸變顏色,邊界的漸變顏色

* colors:漸變顏色陣列

* stoops:漸變位置陣列,類似掃瞄漸變的positions陣列,取值[0,1],中心點為0,半徑到達位置為1.0f

* tilemode:shader未覆蓋以外的填充模式。

*//*

mshader = new radialgradient(250, 250, 125, new int, null, shader.tilemode.mirror);

mpaint.setshader(mshader);

canvas.drawcircle(250, 250, 250, mpaint);*/

// /**

// * 掃瞄渲染,sweepgradient(float cx, float cy, @colorint int color0,int color1)

// * cx,cy 漸變中心座標

// * color0,color1:漸變開始結束顏色

// * colors,positions:類似lineargradient,用於多顏色漸變,positions為null時,根據顏色線性漸變

// */

// mshader = new sweepgradient(250, 250, new int, new float);

// mpaint.setshader(mshader);

// canvas.drawcircle(250, 250, 250, mpaint);

/*** 位圖渲染,bitmapshader(@nonnull bitmap bitmap, @nonnull tilemode tilex, @nonnull tilemode tiley)

* bitmap:構造shader使用的bitmap

* tilex:x軸方向的tilemode

* tiley:y軸方向的tilemode

repeat, 繪製區域超過渲染區域的部分,重複排版

clamp, 繪製區域超過渲染區域的部分,會以最後乙個畫素拉伸排版

mirror, 繪製區域超過渲染區域的部分,映象翻轉排版

*/mshader = new bitmapshader(mbitmap, shader.tilemode.repeat, shader.tilemode.mirror);

mpaint.setshader(mshader);

canvas.drawrect(0, 0, 500, 500, mpaint);

// canvas.drawcircle(250, 250, 250, mpaint);

/*** 組合渲染,

* composeshader(@nonnull shader shadera, @nonnull shader shaderb, xfermode mode)

* composeshader(@nonnull shader shadera, @nonnull shader shaderb, porterduff.mode mode)

* shadera,shaderb:要混合的兩種shader

* xfermode mode: 組合兩種shader顏色的模式

* porterduff.mode mode: 組合兩種shader顏色的模式

*/bitmapshader bitmapshader = new bitmapshader(mbitmap, shader.tilemode.repeat, shader.tilemode.repeat);

lineargradient lineargradient = new lineargradient(0, 0, 1000, 1600, new int, null, shader.tilemode.clamp);

mshader = new composeshader(bitmapshader, lineargradient, porterduff.mode.multiply);

mpaint.setshader(mshader);

canvas.drawcircle(250, 250, 250, mpaint);

}

Android paint應用舉例

1 主要用了paint canvas 兩個類中的方法 2 主要用了畫線和畫圓的方法。3 drawline 起始點軸座標,起始點y軸座標,終點軸座標,終點y軸座標 4 drawcircle 圓心x軸座標,圓心y軸座標,半徑,畫布 效果圖 直接上 了 package com.example.drawpi...

Android Paint類的解析

paint即畫筆,在繪圖過程中起到了極其重要的作用,畫筆主要儲存了顏色,樣式等繪製資訊,指定了如何繪製文字和圖形,畫筆物件有很多設定方法,大體上可以分為兩類,一類與圖形繪製相關,一類與文字繪製相關。1.圖形繪製 setargb int a,int r,int g,int b 設定繪製的顏色,a代表透...

Android Paint類的介紹

要繪圖,首先得調整畫筆,待畫筆調整好之後,再將影象繪製到畫布上,這樣才可以顯示在手機螢幕上。android 中的畫筆是 paint類,paint 中包含了很多方法對其屬性進行設定,主要方法如下 setantialias 設定畫筆的鋸齒效果。setcolor 設定畫筆顏色 setargb 設定畫筆的a...