自定義View之自定義按鍵圓角邊框背景

2021-08-02 19:43:16 字數 2028 閱讀 3895

自定義view之自定義按鍵圓角邊框背景以及使用庫

大概有兩種實現的方法,一種是在自定義控制項時候繪製drawable然後設定稱成背景,另一種是自定義控制項時候採用paint進行幾種簡單的繪製,

本例子是採用後者自定義。

效果如圖

首先設定需要自定義的屬性,相關作用如圖

<?xml version="1.0" encoding="utf-8"?>

然後在**中實現如下

package com.cheng.cc.library;

import android.content.context;

import android.content.res.typedarray;

import android.graphics.canvas;

import android.graphics.dashpatheffect;

import android.graphics.paint;

import android.graphics.path;

import android.graphics.patheffect;

import android.graphics.rectf;

import android.graphics.drawable.gradientdrawable;

import android.util.attributeset;

import android.widget.textview;

/** * @author created by cc on 17/6/17.

* @filename bgbutton

* @githublink

* @csdnlink

*/public class bgbutton extends textview

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

private void init(context context, attributeset attrs)

private void initdraw()

paintbg = new paint();

paintbg.setcolor(bgcolor);

paintbg.setantialias(true);

paintbg.setstyle(paint.style.fill);

if (radius == 0 && shapetype == gradientdrawable.rectangle) ;}}

@override

protected void onmeasure(int widthmeasurespec, int heightmeasurespec)

}@override

protected void ondraw(canvas canvas) else , borderdashgap);//設定虛線的間隔和點的長度

paintborder.setpatheffect(effects);

}canvas.drawroundrect(mreactf, radius, radius, paintborder);}}

} else , borderdashgap);

paintborder.setpatheffect(effects);

}canvas.drawoval(mreactf, paintborder);}}

super.ondraw(canvas);//需要在自己繪製邊框後繪製,否則會被覆蓋掉}}

最後是設定xml檔案中的布局

<?xml version="1.0" encoding="utf-8"?>

最後github鏈結和使用方法:/bgbutton.git

自定義view之自定義屬性

1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...

Android自定義控制項之自定義View 二

效果如下圖 1 自定義ringview繼承view新增其構造方法並建立畫筆 public class ringview extends view protected boolean isrunning false public ringview context context public ring...

Android自定義View 自定義元件

自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...