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...