(タイトルはわかりません)ムービービュー(オーバーラップ)が上に表示されているかどうかを知る方法
こんにちは。私は小さなゲームを作成しようとしています。プレーヤーは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;
}
};
彼の写真を見ると、の1つがとの2つがで、内側がFrameLayout
でゼロが外になっています。
私はそれがすべて幾何学の巨大な量と各オブジェクトとFrameLayout自体のサイズを計算することができることを知っています。多分、これを行う別の方法がありますか?私の仕事をずっと簡単にすることができるライブラリやフレームワークがあるのでしょうか?