国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android自定義View實現拖拽效果

2019-10-21 21:35:35
字體:
來源:轉載
供稿:網友

騰訊QQ有那種紅點拖動效果,今天就來實現一個簡單的自定義View拖動效果,再回到原處,并非完全仿QQ紅點拖動。

先來看一下效果圖

Android,View,拖拽

簡單說一下實現步驟

1.創建一個類繼承View

2.繪制出一個小球

3.重寫onTouchEvent,來根據手指放下,移動,抬起,來控制小球

4.直接在布局中引用 

先貼一張圖看下View的坐標系

Android,View,拖拽

下面就貼一下代碼,最后會給出源碼

public class CustomView extends View {  private int lastX; private int lastY; private int startLeft; private int startRight; private int startTop; private int startBottom;  public CustomView(Context context, @Nullable AttributeSet attrs) { super(context, attrs); }  @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //畫一個小球 Paint paint = new Paint(); paint.setStrokeWidth(30); paint.setColor(Color.parseColor("#FF0000")); paint.setAntiAlias(true); paint.setStyle(Paint.Style.FILL_AND_STROKE); canvas.drawCircle(getWidth()/2,getHeight()/2,30,paint); }  @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); //獲取手機觸摸的坐標 int x = (int) event.getX(); int y = (int) event.getY(); switch (action){ case MotionEvent.ACTION_DOWN://按下,獲取小球初始的位置 startLeft = getLeft(); startRight = getRight(); startTop = getTop(); startBottom = getBottom(); lastX = x; lastY = y; break; case MotionEvent.ACTION_MOVE://移動,小球跟隨手指的移動 int offsetX = x - lastX; int offsetY = y - lastY; layout(getLeft()+offsetX,getTop()+offsetY,  getRight()+offsetX,getBottom()+offsetY); break; case MotionEvent.ACTION_UP://當手指抬起時,回到小球初始的位置 layout(startLeft, startTop, startRight, startBottom); break; } return true; }}

直接在布局中引用該自定義View就可以,寬高給固定 

源碼地址:Android自定義View簡單拖拽效果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临高县| 太白县| 中西区| 广东省| 翼城县| 广西| 乐至县| 昌平区| 襄城县| 惠东县| 富民县| 斗六市| 克东县| 百色市| 凤庆县| 元谋县| 通河县| 兴业县| 长治县| 宁南县| 昌图县| 津市市| 南溪县| 南汇区| 嘉祥县| 水城县| 临潭县| 宁波市| 兰溪市| 河源市| 英德市| 乳山市| 班玛县| 华容县| 泗阳县| 张家界市| 罗甸县| 河北省| 平定县| 教育| 海林市|