Android自定義控制項

2021-08-02 02:28:27 字數 2205 閱讀 3305

android學習筆記,整理給自己複習的時候看的,謝謝!

1. 自定義開關

// 1. 宣告介面物件

public

inte***ce onswitchstateupdatelistener

// 2. 新增設定介面物件的方法, 外部進行呼叫

public

void

setonswitchstateupdatelistener(

onswitchstateupdatelistener onswitchstateupdatelistener)

// 3. 在合適的位置.執行介面的方法

onswitchstateupdatelistener.onstateupdate(state);

// 4. 介面/外部, 收到事件.

1. 在attrs.xml宣告節點declare-styleable
name="toggleview">

name="switch_background"

format="reference" />

name="slide_button"

format="reference" />

name="switch_state"

format="boolean" />

declare-styleable>

2. r會自動建立變數

attr 3個變數

styleable 乙個int陣列, 3個變數(儲存位置)

3. 在xml配置宣告的屬性/ 注意新增命名空間

xmlns:itheima=""

itheima:switch_background="@drawable/switch_background"

itheima:slide_button="@drawable/slide_button"

itheima:switch_state="false"

4. 在建構函式中獲取並使用
// 獲取配置的自定義屬性

string namespace = "";

int switchbackgroundresource = attrs.getattributeresourcevalue(namespace , "switch_background", -1);

測量             擺放     繪製

measure -> layout -> draw

| | |

onmeasure -> onlayout -> ondraw 重寫這些方法, 實現自定義控制項

都在onresume()之後執行

view流程

onmeasure() (在這個方法裡指定自己的寬高) -> ondraw() (繪製自己的內容)

viewgroup流程

onmeasure() (指定自己的寬高, 所有子view的寬高)-> onlayout() (擺放所有子view) -> ondraw() (繪製內容)

2.側滑面板

在xml布局裡擺放內容. include

在自定義viewgroup裡, 進行measure測量, layout布局

響應使用者的觸控事件

int scrollx = (int) (downx - movex);

getscrollx()獲取當前滾動到的位置

平滑動畫

//1. 開始模擬資料

scroller.startscroll(startx, 0, dx, 0, duration);

invalidate();// 重繪介面 -> drawchild() -> computescroll();

//2. 在computescroll中不斷獲取模擬的數值

@override

public

void

computescroll()

}

鬆手之後根據當前的paddingtop決定是否執行重新整理

Android 自定義控制項

幹android也有一段的時間了,自定義這塊的東西覺得還是很有比較複習一下基礎的東西。自定義控制項和自定義元件基本上的使用都是在專案中基本的android控制項滿足不了需求的時候使用的。所以,如果要高出特別炫的特效,或者比較特殊的控制項排列方式,例如瀑布流,那麼就要好好學學自定義咯。首先,先簡單的介...

android自定義控制項

android自定義控制項 二 入門,繼承view 說說android 兩種為自定義元件新增屬性的使用方法和區別 自定義控制項的屬性 自定義控制項 今天花了3,4個小時看了自定義控制項,看 懂了,還沒有實踐,因為時間不夠,日後實踐。總結下 自定義控制項有3種方式 繼承已有控制項 繼承乙個容器控制項,...

Android自定義控制項

在android中,無論是熟知的布局,還是控制項,統統全都繼承自基類view。自定義view實現有幾種 view的繪製基本由measure layout draw 這個三個函式完成 在android座標系中,以螢幕左上角作為原點,這個原點向右是x軸的正軸,向下是y軸正軸。結合以上的api,可以計算出...