首页 > 系统 > Android > 正文

Android编程实现图标拖动效果的方法

2019-10-24 20:34:43
字体:
来源:转载
供稿:网友

这篇文章主要介绍了Android编程实现图标拖动效果的方法,涉及Android事件响应及图标变换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Android编程实现图标拖动效果的方法。分享给大家供大家参考,具体如下:

最近优化图标拖动时的速率,稍微有一点点效果,直接把代码贴出来,有兴趣一起讨论的朋友可以给我留言。

代码如下:

DragView.java

 

 
  1. package com.android.dragtest; 
  2. import android.content.Context; 
  3. import android.util.AttributeSet; 
  4. import android.util.Log; 
  5. import android.view.MotionEvent; 
  6. import android.view.View; 
  7. import android.widget.FrameLayout; 
  8. public class DragView extends FrameLayout { 
  9. private static final String TAG = "DragView"
  10. private float X; 
  11. private float Y; 
  12. private View mDragView; 
  13. public DragView(Context context) { 
  14. this(context, null); 
  15. public DragView(Context context, AttributeSet attrs) { 
  16. this(context, attrs, 0); 
  17. public DragView(Context context, AttributeSet attrs, int defStyle) { 
  18. super(context, attrs, defStyle); 
  19. mDragView = new View(context); 
  20. mDragView.setLayoutParams(new LayoutParams(60, 60)); 
  21. mDragView.setBackgroundDrawable(getResources().getDrawable(R.drawable.gamecenter)); 
  22. mDragView.setVisibility(View.INVISIBLE); 
  23. addView(mDragView); 
  24. public boolean onInterceptTouchEvent(MotionEvent ev) { 
  25. final int action = ev.getAction(); 
  26. switch (action) { 
  27. case MotionEvent.ACTION_DOWN: 
  28. Log.d(TAG, "===============>onInterceptTouchEvent ACTION_DOWN"); 
  29. break
  30. case MotionEvent.ACTION_MOVE: 
  31. Log.d(TAG, "===============>onInterceptTouchEvent ACTION_MOVE"); 
  32. break
  33. case MotionEvent.ACTION_UP: 
  34. Log.d(TAG, "===============>onInterceptTouchEvent ACTION_UP"); 
  35. break
  36. return true
  37. public boolean onTouchEvent(MotionEvent ev) { 
  38. final int action = ev.getAction(); 
  39. X = ev.getX(); 
  40. Y = ev.getY(); 
  41. switch (action) { 
  42. case MotionEvent.ACTION_DOWN: 
  43. Log.d(TAG, "onTouchEvent ACTION_DOWN"); 
  44. mDragView.layout((int)X - 30, (int)Y - 30, (int)X + 30, (int)Y + 30); 
  45. mDragView.setVisibility(View.VISIBLE); 
  46. break
  47. case MotionEvent.ACTION_MOVE: 
  48. Log.d(TAG, "onTouchEvent ACTION_MOVE x:" + X + " Y:" + Y); 
  49. mDragView.layout((int)X - 30, (int)Y - 30, (int)X + 30, (int)Y + 30); 
  50. break
  51. case MotionEvent.ACTION_UP: 
  52. Log.d(TAG, "onTouchEvent ACTION_UP"); 
  53. mDragView.setVisibility(View.INVISIBLE); 
  54. break
  55. return true

DragTestActivity.java

 

 
  1. package com.android.dragtest; 
  2. import android.app.Activity; 
  3. import android.os.Bundle; 
  4. public class DragTestActivity extends Activity { 
  5. /** Called when the activity is first created. */ 
  6. @Override 
  7. public void onCreate(Bundle savedInstanceState) { 
  8. super.onCreate(savedInstanceState); 
  9. setContentView(R.layout.main); 

main.xml

 

 
  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3. android:layout_width="fill_parent" 
  4. android:layout_height="fill_parent" 
  5. android:orientation="vertical" > 
  6. <com.android.dragtest.DragView 
  7. android:layout_width="match_parent" 
  8. android:layout_height="match_parent"
  9. </com.android.dragtest.DragView> 
  10. </LinearLayout> 

希望本文所述对大家Android程序设计有所帮助。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表