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

首頁 > 系統 > Android > 正文

Android自定義View實現拖拽效果

2019-12-12 00:27:00
字體:
來源:轉載
供稿:網友

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

先來看一下效果圖

簡單說一下實現步驟

1.創建一個類繼承View

2.繪制出一個小球

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

4.直接在布局中引用 

先貼一張圖看下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簡單拖拽效果

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 红桥区| 克什克腾旗| 四平市| 富平县| 东平县| 托克托县| 舟曲县| 盐津县| 云和县| 蒙城县| 大同市| 甘谷县| 常宁市| 瓦房店市| 榆社县| 清流县| 镇远县| 九台市| 胶南市| 城步| 南宫市| 浦北县| 子长县| 新龙县| 晴隆县| 红河县| 罗江县| 祁门县| 壶关县| 肇庆市| 长岭县| 北辰区| 雅江县| 嘉峪关市| 广汉市| 屏边| 连山| 晋宁县| 内江市| 四平市| 桂平市|