*///構造方法,一般會重寫三個
//用於初始化一些資料,或者其他東西
public
class myviews extends view
public
myviews(context context, @nullable attributeset attrs)
public
myviews(context context, @nullable attributeset attrs, int defstyleattr)
}@override
protected
void
ondraw(canvas canvas)
//拖動事件
//拖動的實現原理:
/** * 每個view在螢幕上都有個座標,也就是上下左右邊距,在螢幕上都有(x,y)座標。如果座標移動,那麼view的位置也會移動
* ,這是比較好理解的。
* 我們手指在手機螢幕上滑動的時候,手指的座標也是移動的。
* 我們只需要獲得手指從按下到離開過程中的距離差,然後將距離差加到原來的座標上就可以是實現控制項的移動。
* 如果要實現拖動,那麼在滑動的過程中,不斷的獲取距離差,不斷的加到原來的座標就可以了。
* 注意:
* 這裡的移動是相對於螢幕的,所以我們獲取座標應該是絕對座標,而不是相對座標
* event.getrawx() ---- 獲取絕對x座標
* event.getrawy() ---- 獲取絕對y座標
* * event.getx()-------- 獲取相對座標x
* event.gety()-------- 獲取相對座標y
*/// ontouchevent 處理觸控事件
//touch事件:1.按下action_down,2.抬起action_up,3 滑動 action_move 4.取消action_cancel
//獲取觸控點的座標
//絕對座標---相對於螢幕來說
//相對座標---相對於自己
獲取事件
@override
public boolean ontouchevent(motionevent event)
if (top < 0)
if (right > w)
//如果移動到最下邊,就判斷是否等於螢幕高度減去狀態列高度
if (bottom > h - statusbarheight1)
//重新賦值給布局
layout(left, top, right, bottom);//規定了view的位置
//將lastx,lasty重新賦值
lastx = rawx;
lasty = rawy;
break;
case motionevent.action_up:
break;
}return
true;//返回true代表自己處理事件
}}
Android自定義View之圓形頭像
圓形頭像是我們在開發中經常用到的控制項,下面我們就來自定義這樣乙個控制項 1.自定義circleimageview類繼承imageview package com.example.qw.circleimageview created by quwei on 2015 5 13 0013.import...
Android圓形頭像顯示自定義View
在專案開發中,需要給使用者的頭像設定為圓形。無論獲取到什麼,都顯示為圓形頭像。自定義view寫法如下。使用的時候在xml布局中,直接使用就好。public class mycircleimageview extends imageview public mycircleimageview conte...
自定義View 圓形進度條
首先在res values下建立乙個attrs資源資料夾 自定義view public class circleprogressview extends view public circleprogressview context context,attributeset attrs private...