我正在开发一个 Android 应用程序,我想为 UI 添加一些视觉效果。我有一个活动(我们称之为 MainActivity),上面有一些文本字段、按钮和画廊。我想要实现的是:当用户触摸此活动的某个位置时,在他触摸的点应该有一些视觉效果(例如像闪光等)。
所以我的问题的基本部分是:a)我如何确定用户触摸的位置 b)我如何将我的效果绘制到屏幕上(作为活动的“覆盖”)。
提前感谢每一个有用的答案。
(我已经检查了这个答案,但它似乎不适用于我的情况。)
我正在开发一个 Android 应用程序,我想为 UI 添加一些视觉效果。我有一个活动(我们称之为 MainActivity),上面有一些文本字段、按钮和画廊。我想要实现的是:当用户触摸此活动的某个位置时,在他触摸的点应该有一些视觉效果(例如像闪光等)。
所以我的问题的基本部分是:a)我如何确定用户触摸的位置 b)我如何将我的效果绘制到屏幕上(作为活动的“覆盖”)。
提前感谢每一个有用的答案。
(我已经检查了这个答案,但它似乎不适用于我的情况。)
首先,您必须将 onTouchListener 添加到您的根布局中,然后您可以获得用户触摸屏幕的坐标。例子 :
float x,y;
rl = (RelativeLayout) findViewById(R.id.root_layout);
rl.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
return super.onTouchEvent();
}
});
要进一步回答您的问题,要进行叠加,请查看 APIDemos -> Graphics -> OpenGL ES -> Translucent GLSurfaceView。这将帮助您在活动上创建叠加层。API 演示中可能还有一些其他示例可以为您提供一些帮助。Android 的 API 演示是一组很好的示例,可以解决一些已知问题。
您应该覆盖onTouchEvent
您的活动的方法。然后您可以获取触摸事件的坐标:
@Override
public boolean onTouchEvent(MotionEvent event) {
float touchX = event.getX();
float touchY = event.getY();
switch(event.getAction()) {
case MotionEvent.ACTION_DOWN:
// touch down
break;
case MotionEvent.ACTION_MOVE:
// movement
break;
case MotionEvent.ACTION_UP:
// touch up
break;
default:
// default
}
return super.onTouchEvent(event);
}
如果您正在使用 ICS,那么我建议您查看“设置”应用程序中的“开发人员选项”。如果您不使用 ICS,我相信您可以查看 APIDEMOS for touchevents。他们在触球上画线。里面的代码,可以让你开始。