Android 重寫View來實現全新的控制項

2021-08-20 12:46:53 字數 2663 閱讀 8273

xmlversion

="1.0"

encoding

="utf-8"

?>

<

resources

>

<

declare

-styleable

name

="myarcscalemap"

>

<

attr

name

="myarcscalemap_titletext"

format

="string"

/>

<

attr

name

="myarcscalemap_titletextcolor"

format

="color"

/>

<

attr

name

="myarcscalemap_titletextsize"

format

="dimension"

/>

declare

-styleable

>

resources

>

import android.content.context;

import android.content.res.typedarray;

import android.graphics.canvas;

import android.graphics.color;

import android.graphics.paint;

import android.graphics.rectf;

import android.util.attributeset;

import android.view.view;

public class myarcscalemap extends view

public myarcscalemap(context context, attributeset attrs,int defstyleattr)

/*** myarcscalemap 構造方法

* @param context 上下文 引數

* @param attrs xml引數

*/public myarcscalemap(context context, attributeset attrs)

/*** 過載ondraw方法,重定義畫布

* @param canvas 控制項畫布引數

* canvas.drawcircle 畫圓

* canvas.drawarc 畫圓弧

* canvas.drawtext 寫字

*/@override

protected void ondraw(canvas canvas)

/*** 控制項大小測量

* @param widthmeasurespec 控制項寬

* @param heightmeasurespec 控制項高

*/@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

/*** initmyarcscalemap() 初始化方法

* 初始化mcirclepaint marcpaint mtextpaint等畫筆引數

*/public void initmyarcscalemap()else

mcirclexy = length/2;

mradius = (float)(length*0.5)/2;

mcirclepaint = new paint();

mcirclepaint.setantialias(true);

mcirclepaint.setcolor(getresources().getcolor(android.r.color.holo_blue_bright));

marcrectf = new rectf(

(float) (length * 0.1),

(float) (length * 0.1),

(float) (length * 0.9),

(float) (length * 0.9));

msweepangle = (msweepvalue / 100f) * 360f;

marcpaint = new paint();

marcpaint.setantialias(true);

marcpaint.setcolor(getresources().getcolor(android.r.color.holo_blue_bright));

marcpaint.setstrokewidth((float) (length * 0.1));

marcpaint.setstyle(paint.style.stroke);

mtextpaint = new paint();

mtextpaint.settextsize(marcscalemaptitletextsize);

mtextpaint.setcolor(marcscalemaptitletextcolor);

mtextpaint.settextalign(paint.align.center);

this.invalidate();}}

自定義view之繼承View重寫onDraw方法

首先,這種繼承方法主要用於實現一些不規則的效果,一般需要重寫ondraw方法。實現view的構造方法 public circleview context context 在values下新建乙個attrs.xml檔案 xml version 1.0 encoding utf 8 name circl...

Android 設定View 圓角

雖然很簡單,但還是記錄一下。不一到此一遊 在drawable檔案下 建立乙個布局檔案corners bg.xml 000000 圓角view的背景顏色 10dp 上左圓角 android toprightradius 10dp 上右圓角 android bottomrightradius 10dp ...

Android 動態新增view

android 動態新增view 第一次寫部落格,記錄一下平時出現bug。這兩天寫乙個東西,要動態的迴圈的新增乙個layout,走了一點彎路,說實話,我也是乙個android菜鳥,好記性不如爛筆頭,現在記錄下來,以免以後在遇到這樣的坑。進入主題,直接上 private void initattrib...