自定義學習 摩天輪原理

2021-08-07 03:46:45 字數 2117 閱讀 2903

這個例子是從課堂上拿過來的;是乙個很好的例子,可以學習手勢識別,以及事件分發,特別是轉動速度和滑動之間的關係。

public class skywheel extends relativelayout

public skywheel(context context, attributeset attrs)

public skywheel(context context)

private void init()

double firstchilddegree = 0;

public void setdegree(double degree)

@override

public boolean onintercepttouchevent(motionevent ev)

@override

public boolean ontouchevent(motionevent event)

// 此方法負責孩子的擺放

@override

protected void onlayout(boolean changed, int l, int t, int r, int b)

}@suppresslint("wrongcall")

@override

protected void dispatchdraw(canvas canvas)

// viewgroup在分發繪製的時候,不會呼叫自己的ondraw方法

// 需要手動觸發

protected void ondraw(canvas canvas)

};private void computevalues()

if (childheight > heightestchildheight)

}radius = math.min(getwidth() / 2 - widthestchildwidth / 2, getheight()

/ 2 - heightestchildheight / 2);

// 角度間隔

celldegree = math.pi * 2 / childcount;

}private ongesturelistener gesturelistener = new ongesturelistener()

// 抬起手指時,還有速度

/*** @param e1 本組觸控事件的起始事件  down

* @param e2 本組觸控事件的最後一次move事件  move

* @param velocityx 手指離開螢幕的速度 ,單位是畫素/秒  (水平)

* @param velocityy 手指離開螢幕的速度 ,單位是畫素/秒  (垂直)

*/@override

public boolean onfling(motionevent e1, motionevent e2, float velocityx,

float velocityy)

// 單擊

@override

public boolean onsingletapup(motionevent e)

return false;

}// 按下後一小會,還沒有移動

@override

public void onshowpress(motionevent e)

// 長按

@override

public void onlongpress(motionevent e)

// 手指按下

@override

public boolean ondown(motionevent e)

return false;}};

private valueanimator valueanimator;

protected double getpiontdegree(float x, float y)

protected int findtouchchildindex(float x, float y)

}return -1;

}protected void startrotate(double degreevelocity)

});valueanimator.start();}}

vue自定義指令原理

指令本質上是裝飾器,是vue對html元素的擴充套件,給html元素增加自定義功能,語義化html標籤。vue編譯dom時,會執行與指令關聯的js 即找到指令物件,執行指令物件的相關方法。自定義指令有五個生命週期 也叫鉤子函式 分別是bind inserted update componentupd...

自定義元件 學習

通過對android的學習,大家都知道,谷歌提供的api demo的一些基本元件雖然很豐富,但遠遠滿足不了我們設計華麗介面的需求,所以這就需要我們自己來定義我們所需要的元件.還好谷歌提供一些自定義控制項的一些方法.現將本人從網上收集以及本人學習的自定義控制項的使用方法列下,供各位參考,如有不妥之處歡...

自定義View Canvas Paint學習

主要學習blog 步驟1 建立乙個畫筆 private paint mpaint new paint 步驟2 初始化畫筆 根據需求設定畫筆的各種屬性,具體如下 private void initpaint 步驟3 在建構函式中初始化 public carsonview context context...