我已经制作了一个在Android手机主屏幕上设置图像的服务。现在我想在设备屏幕上移动该图像。我该怎么做?
感谢您的回答。
提前致谢。
这是我的代码。
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);
}
}
现在我想要的是在长按一下移动我的图像,当我第一次点击图像时工作正常。但是,一旦我移动图像第二次长按单击拖动不起作用。 从第二次图像开始移动只需触摸它长时间点击不起作用。