系統提供的view 如 textview 、imageview 都是繼承自view的;
通過自定義乙個textview 來熟悉繼承自view 的自定義view的api用法
用來處理控制項的大小
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
//獲取寬高的模式
int widthmode = measurespec.getmode(widthmeasurespec);
int heightmode = measurespec.getmode(heightmeasurespec);
//mode
指定了wrap_content
指定了確切的值 match_parent fill_parent
盡可能的大
用於繪製
@override
protected void ondraw(canvas canvas)
用於處理使用者觸控事件
@override
public boolean ontouchevent(motionevent event)
return super.ontouchevent(event);
}
用來配置自定義控制項的屬性
<?xml version="1.0" encoding="utf-8"?>
在布局中使用
在自定義控制項中獲取
public textview(context context, @nullable attributeset attrs, int defstyleattr)
package com.nb.customview;
import android.content.context;
import android.content.res.typedarray;
import android.graphics.canvas;
import android.graphics.color;
import android.graphics.paint;
import android.graphics.rect;
import android.util.attributeset;
import android.util.log;
import android.util.typedvalue;
import android.view.motionevent;
import android.view.view;
import android.widget.linearlayout;
import androidx.annotation.nullable;
/** * created by dongking on 2020/11/5
* version 1.0
* describe:自定義textview
*/class textview extends view
// 在layout 中使用
public textview(context context, @nullable attributeset attrs)
//有style時使用
public textview(context context, @nullable attributeset attrs, int defstyleattr)
private int sp2px(int sp)
/*** 指定寬高
* 針對不同的情況
** @param widthmeasurespec
* @param heightmeasurespec
*/@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec)
int height = measurespec.getsize(heightmeasurespec);
if (heightmode == measurespec.at_most)
//設定控制項的寬高
setmeasureddimension(width, height);
}/**
* 用於繪製
Android自定義View訓練 1
前言 最近這段時間想根據網上部落格的案例,自己練習自定義view,僅僅作為練習用,還有很多不足之處,見諒 案例取自 先上傳原始碼 public class practiceview1 extends view public practiceview1 context context,attribut...
Android自定義View 自定義元件
自繪控制項也分兩種,自定義元件和自定義容器,自定義元件是繼承view類,自定義容器時繼承viewgrounp 今天主要分析下自定義元件 還是舉個例子來的實際些,假如我們要畫乙個最簡單的textview,首先想到的就是canvas.drawtext 方法,怎麼畫了?還是得一步一步來 1 寫乙個myte...
自定義view之自定義屬性
1.首先在res的values檔案下新建乙個名為attrs.xml檔案 在該xml檔案中編寫我們需要的屬性 declare styleable後面的name必須要與接下來要自定義的view名一致。attr 後面的name表示需要自定義的屬性,format表示這些屬性的型別 2.新建乙個類繼承text...