怎么拖动一个控件

gistop 2011-07-26 12:13:56
想实现这样的功能:一个控件(按钮 图片 或其他),手指按住后,可以拖动它的位置 这个该怎么实现呢??


多谢指点
...全文
43 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
passself 2011-07-26
  • 打赏
  • 举报
回复
楼上的就可以了,添加你想要的处理事件就可以了,(一般是在拖到的标签上)
一口三个汉堡 2011-07-26
  • 打赏
  • 举报
回复
要自定一个view,添加触摸监听,并修改显示位置。
或者使用绝对布局,然后加触摸监听,并修改位置。。
rt77777 2011-07-26
  • 打赏
  • 举报
回复
package rtt.gesture;

import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;

public class Gesture extends Activity {
/** Called when the activity is first created. */
private GestureDetector detector;
private myGestureListener gListener;
private ImageView image;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

setContentView(R.layout.main);
gListener = new myGestureListener();
detector = new GestureDetector(Gesture.this,gListener);
image = (ImageView)findViewById(R.id.image);
}
/* 当Activity的onTouchEvent()被触发时,
* 触发GestureDetector的onTouchEvent() */
@Override
public boolean onTouchEvent(MotionEvent event)
{
if (detector.onTouchEvent(event))
{
return detector.onTouchEvent(event);
}
else
{
return super.onTouchEvent(event);
}
}

/* 自定义GestureListener类 */
public class myGestureListener implements GestureDetector.OnGestureListener
{
/* 手指在屏幕上拖拉时触发此method */
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY)
{
//你的代码应该在这里
return false;
}

@Override
public boolean onDown(MotionEvent arg0)
{
return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY)
{
//这是横向或竖向滑动超过50之后就会触发的事件,可以作为一个例子写你需要的代码,不过这是快速滑动时触发的事件
if (e1.getX() - e2.getX() > 50) {
Toast.makeText(Gesture.this, "左", Toast.LENGTH_SHORT).show();
image.setVisibility(View.INVISIBLE);
return true;
} else if (e1.getX() - e2.getX() < -50) {
Toast.makeText(Gesture.this, "右", Toast.LENGTH_SHORT).show();
image.setVisibility(View.VISIBLE);
image.setImageResource(R.drawable.icon);
return true;
} else if (e1.getY() - e2.getY() > 50) {
Toast.makeText(Gesture.this, "上", Toast.LENGTH_SHORT).show();
return true;
} else if (e1.getY() - e2.getY() < -50) {
Toast.makeText(Gesture.this, "下", Toast.LENGTH_SHORT).show();
return true;
}

return false;
}

@Override
public void onLongPress(MotionEvent e)
{
}

@Override
public void onShowPress(MotionEvent e)
{
}

@Override
public boolean onSingleTapUp(MotionEvent e)
{
return false;
}
}
}

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧