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