欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新

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

来源: 开发者 投稿于  被查看 39189 次 评论:152

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


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

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

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

  代码如下:

  DragView.java

  package com.android.dragtest;

  import android.content.Context;

  import android.util.AttributeSet;

  import android.util.Log;

  import android.view.MotionEvent;

  import android.view.View;

  import android.widget.FrameLayout;

  public class DragView extends FrameLayout {

  private static final String TAG = "DragView";

  private float X;

  private float Y;

  private View mDragView;

  public DragView(Context context) {

  this(context, null);

  }

  public DragView(Context context, AttributeSet attrs) {

  this(context, attrs, 0);

  }

  public DragView(Context context, AttributeSet attrs, int defStyle) {

  super(context, attrs, defStyle);

  mDragView = new View(context);

  mDragView.setLayoutParams(new LayoutParams(60, 60));

  mDragView.setBackgroundDrawable(getResources().getDrawable(R.drawable.gamecenter));

  mDragView.setVisibility(View.INVISIBLE);

  addView(mDragView);

  }

  public boolean onInterceptTouchEvent(MotionEvent ev) {

  final int action = ev.getAction();

  switch (action) {

  case MotionEvent.ACTION_DOWN:

  Log.d(TAG, "===============>onInterceptTouchEvent ACTION_DOWN");

  break;

  case MotionEvent.ACTION_MOVE:

  Log.d(TAG, "===============>onInterceptTouchEvent ACTION_MOVE");

  break;

  case MotionEvent.ACTION_UP:

  Log.d(TAG, "===============>onInterceptTouchEvent ACTION_UP");

  break;

  }

  return true;

  }

  public boolean onTouchEvent(MotionEvent ev) {

  final int action = ev.getAction();

  X = ev.getX();

  Y = ev.getY();

  switch (action) {

  case MotionEvent.ACTION_DOWN:

  Log.d(TAG, "onTouchEvent ACTION_DOWN");

  mDragView.layout((int)X - 30, (int)Y - 30, (int)X + 30, (int)Y + 30);

  mDragView.setVisibility(View.VISIBLE);

  break;

  case MotionEvent.ACTION_MOVE:

  Log.d(TAG, "onTouchEvent ACTION_MOVE x:" + X + " Y:" + Y);

  mDragView.layout((int)X - 30, (int)Y - 30, (int)X + 30, (int)Y + 30);

  break;

  case MotionEvent.ACTION_UP:

  Log.d(TAG, "onTouchEvent ACTION_UP");

  mDragView.setVisibility(View.INVISIBLE);

  break;

  }

  return true;

  }

  }

  DragTestActivity.java

  package com.android.dragtest;

  import android.app.Activity;

  import android.os.Bundle;

  public class DragTestActivity extends Activity {

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  }

  }

  main.xml

  

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  android:orientation="vertical" >

  

  android:layout_width="match_parent"

  android:layout_height="match_parent">

  

  

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

相关文章

    暂无相关文章

用户评论