想实现这样的功能:一个控件(按钮 图片 或其他),手指按住后,可以拖动它的位置 这个该怎么实现呢??
多谢指点
多谢指点
解决方案 »
- 调用sendTextMessage发送短信后怎么写入到短信箱?
- 打算一个月将android应用程序开发看一下,各位大虾给点建议
- 加急。。。。android使用Intent打开联系人的修改页面出错
- 设置默认Intent.action.view 的打开程序
- ListView的问题
- 2.2开机自动导入sim卡联系人到contacts2.db中时很容易造成无响应
- 各位大大请教1个X264的问题
- 关于调试输出android.os.Debug.dumpHprofData("/data/temp/myapp.hprof")的问题
- 图片显示问题
- 按钮的子菜单
- 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;
}
}
}