studio 自定義view 圓形 跟滑鼠移動

2021-08-14 02:35:41 字數 2258 閱讀 2643

*///構造方法,一般會重寫三個

//用於初始化一些資料,或者其他東西

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...