如何自定義繪製View

2021-08-08 18:29:37 字數 1659 閱讀 6996

關於自定義view時代使用樣式,風格,大小的資源定義不再介紹,這裡注重介紹如何在ondraw(canvas canvas)方法中去繪製所需要的view。

主要體現在 paint 、canvas物件的使用:

下面主要呈現乙個類似手錶的view的繪製:

自定義view如下:

package view;

import com.example.testtone.mainactivity;

import android.content.context;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.graphics.paint.style;

import android.graphics.path;

import android.graphics.rectf;

import android.text.textutils;

import android.util.log;

import android.view.view;

import android.widget.toast;

public class testview extends view

public void updatetime(int second)

@override

protected void ondraw(canvas canvas) else

canvas.rotate(6,0f,0f); //旋轉畫紙

} //繪製指標圓心

tmppaint.setcolor(color.gray);

tmppaint.setstrokewidth(4);

canvas.drawcircle(0, 0, 15, tmppaint);

tmppaint.setstyle(style.fill);

tmppaint.setcolor(color.yellow);

canvas.drawcircle(0, 0, 10, tmppaint);

//繪製指標,y: 上負,下正;; x: 左 負,右正

float r =30;

float r = 200;

double xend,xstart,yend,ystart;

// 根據三角函式計算

double angle = second*math.pi/30;

log.d("jxh","  ondraw  mstrokewidth="+mstrokewidth);

toast.maketext(this.getcontext(), " angle= "+angle, toast.length_short).show();

xstart = -r*math.sin(angle);

ystart = r*math.cos(angle);

xend = r*math.sin(angle);

yend = -r*math.cos(angle);

canvas.drawline((float)xstart,(float) ystart,(float) xend,(float)yend,p );}}

主activity的:

Android自定義View基礎繪製

1 onmeasure測量 計算寬高 2 viewgroup進行onlayout 基於位置和寬高布置到螢幕 3 ondraw檢視顯示自身內容 渲染 canvas 畫布,可以提供檢視顯示的載體,可以繪製文字 幾何圖形 影象 填充顏色 paint 畫筆,針對畫布需要繪製的內容的修飾 建立畫筆 paint...

自定義View之繪製文字

在初始化方法裡建立畫筆,設定畫筆顏色,不設定預設黑色 mtextpaint new paint mtextpaint.setcolor color.white 在ondraw方法裡繪製文字 canvas.drawtext text,float x,float y offset,mtextpaint ...

自定義時鐘View,表盤的繪製

實現的效果圖如下 main中布局檔案 values資料夾下新建乙個xml檔案,定義引數 1.自定義乙個類 myclock extends view,並設定統一的入口 public myclock context context public myclock context context,attri...