自定義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...