1 自定義view入門

2022-07-15 17:42:18 字數 2714 閱讀 3737

系統提供的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...