原文:http://www.eoeandroid.com/thread-54395-2-1.html
对原文的代码稍作修改:
public class Main extends Activity {
int x = 0;
int y = 0;
public static WindowManager.LayoutParams mParams;
WindowManager mWM ;
ImageView mMouseView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initMouseView();
}
//创建鼠标视图
public void initMouseView() {
mWM = (WindowManager) this.getBaseContext().getSystemService(
Context.WINDOW_SERVICE);
mMouseView = new ImageView(this.getBaseContext());
mMouseView.setBackgroundResource(R.drawable.ic_launcher);
mParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_TOAST,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE,
PixelFormat.TRANSLUCENT);
mParams.gravity = Gravity.LEFT | Gravity.TOP;
mParams.x = x;
mParams.y = y;
mWM.addView(mMouseView, mParams);
}
public boolean onTouchEvent(MotionEvent event) {
mParams.x = (int) event.getX();
mParams.y = (int) event.getY();
mWM.updateViewLayout(mMouseView, mParams);
return true;
}
//移动鼠标视图
public void moveMouse() {
mParams.x += 10;
if (mParams.x > 200) {
mParams.x = 0;
}
mParams.y += 10;
if (mParams.y > 200) {
mParams.y = -50;
}
mWM.updateViewLayout(mMouseView, mParams);
}
}
此例子还有很多缺点:
比如不能在退出程序后移动鼠标的图案。
鼠标的x,y坐标稍有点不对应。