国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 子长县| 莫力| 化德县| 太仆寺旗| 龙川县| 抚顺市| 鄂托克旗| 类乌齐县| 桓仁| 安阳县| 刚察县| 神池县| 阳江市| 竹山县| 靖边县| 南木林县| 赫章县| 外汇| 衢州市| 无为县| 漳州市| 迁安市| 长顺县| 松江区| 山阳县| 四平市| 乃东县| 永济市| 开封市| 水富县| 竹北市| 昌图县| 永定县| 蓬莱市| 黎川县| 九江县| 家居| 勃利县| 扎鲁特旗| 开原市| 凤山县|