如何在Android上在主屏幕上拖动图像?
如何在Android上在主屏幕上拖动图像?
我开发了一个可以在Android手机的主屏幕上设置图像的服务。现在我想将该图像移动到设备屏幕上。我应该如何做到这一点?\n感谢您的答复。\n提前致谢。\n这是我的代码。\n
public class FeatureService extends Service { private WindowManager windowManager; private ImageView dialerImage; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @Override public void onCreate() { super.onCreate(); windowManager = (WindowManager) getSystemService(WINDOW_SERVICE); dialerImage = new ImageView(this); dialerImage.setImageResource(R.drawable.dialer); final WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_PHONE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSLUCENT); params.gravity = Gravity.TOP | Gravity.LEFT; params.x = 0; params.y = 100; windowManager.addView(dialerImage, params); dialerImage.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i= new Intent(getApplicationContext(), MainActivity.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); return; } }); dialerImage.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { dialerImage.setOnTouchListener(new View.OnTouchListener() { private int initialX; private int initialY; private float initialTouchX; private float initialTouchY; @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: { return false; } case MotionEvent.ACTION_DOWN: { initialX = params.x; initialY = params.y; initialTouchX = event.getRawX(); initialTouchY = event.getRawY(); return false; } case MotionEvent.ACTION_MOVE: { params.x = initialX + (int) (event.getRawX() - initialTouchX); params.y = initialY + (int) (event.getRawY() - initialTouchY); windowManager.updateViewLayout(dialerImage, params); return false; } } return true; } }); return false; } }); } @Override public void onDestroy() { super.onDestroy(); if (dialerImage != null) windowManager.removeView(dialerImage); } }
\n现在我想在长按时移动我的图像,第一次点击图像时可以正常工作。但是一旦我移动图像第二次长按拖动就不起作用了。\n第二次开始,只需触摸图像即可移动,长按不起作用。