0
(不知道标题请正确)如何知道何时一个移动视图(重叠)位于顶部
嗨。我正在尝试创建一个小游戏,玩家可以在RalativeLayout
之内移动对象。我想要的是检查我的移动物体是在FrameLayout
之内还是在它之外。例如,我想在FrameLayout
内更改此对象的文本。
所以我创建对象里面for
循环是这样的:
Random random = new Random();
for (int i = 0; i < 3; i++) { //any number, not just 3
TextView textView = new TextView(getActivity());
textView.setX(random.nextInt(size.x - 200));
textView.setY(random.nextInt(size.y - 200)); //scattered all over the screen
textView.setText(i + "");
textView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
textView.setTextSize(50);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(lp);
textView.setOnTouchListener(touchListener);
frameFor.addView(textView);
}
还有一个FrameLayout里,其中最终我所有的对象应该是:
RelativeLayout.LayoutParams frameLP = new RelativeLayout.LayoutParams(300, 300);
frameLP.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
frameForLetters.setLayoutParams(frameLP);
正如你所看到的,我还添加了OnTouchListener
使物件可移动:
View.OnTouchListener touchListener = new View.OnTouchListener() {
float dX, dY;
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
dX = view.getX() - event.getRawX();
dY = view.getY() - event.getRawY();
break;
case MotionEvent.ACTION_MOVE:
view.animate()
.x(event.getRawX() + dX)
.y(event.getRawY() + dY)
.setDuration(0)
.start();
break;
default:
return false;
}
return true;
}
};
in t他的照片你可以看到一个和两个都在FrameLayout
里面,零在外面。
我知道这一切都可以用大量的几何和计算每个对象和FrameLayout本身的大小来完成。也许有另一种方式做到这一点?也许有一个图书馆或框架可以让我的任务变得更容易?