想实现这样的功能:一个控件(按钮 图片 或其他),手指按住后,可以拖动它的位置 这个该怎么实现呢??
多谢指点
多谢指点
解决方案 »
- 对于复制android手机系统文件到PC上各位大牛有什么好办法!!!
- 状态栏抖动问题,急急急!!!!!!!
- 求助~~~关于mars老师的MP3项目的第1季第30集
- 游戏中人物的运动轨迹,高分搜集。。。
- 冰天雪地五花大绑裸跪求从ANDROID从SQLITE读取有'\n'的方法
- 关于android 9patch 图原理
- android 调用webservice dataset数据出现异常,哪位高手麻烦看下
- 程序安装上了,但是一按“显示通知”的时候就死了,代码也没写错啊,是什么原因
- 关于Android自启动修改文件功能
- 高德地图List<LatLng>添加坐标点的问题
- android 如何读取同学录中的数据
- 【急】android手机与usb扩展设备通讯
或者使用绝对布局,然后加触摸监听,并修改位置。。
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;
}
}
}