我希望将两个不同的视图移入我的布局中,以便用户可以根据自己的喜好显示。
到目前为止,我已经编写了以下代码来处理触摸事件:
this.viewEvent.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event)
{
final int y = (int) event.getRawY();
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
switch (event.getAction() & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_DOWN:
element.setEventY(y - params.topMargin);
break;
case MotionEvent.ACTION_UP:
viewGroup.invalidate();
break;
case MotionEvent.ACTION_POINTER_DOWN:
case MotionEvent.ACTION_POINTER_UP:
break;
case MotionEvent.ACTION_MOVE:
params.topMargin = y - element.getEventY();
params.bottomMargin = screenHeight - view.getHeight() - params.topMargin;
// Avoid out of screen
if (params.topMargin < 0) return true;
// Apply changes
view.setLayoutParams(params);
break;
}
return true;
}
});
element
是一个自定义对象的实例,用于处理位置。
screenHeight
是由Display
类提供的屏幕高度。
我能够移动这个元素,但当我触摸它时它会闪烁,一旦我松开手指,视图就消失了。我甚至无法检索它,因为它已经超出了屏幕。
我做错了什么吗?
谢谢你的帮助。