0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

removeAllViewsが機能しない?

Posted at

#作ろうとしたもの
20220205_160339.gif
このようにボタンが跳ね返る動きを作りました。始めるのボタンを押すたびに新しいviewを追加して動かすことをしています。その際以前のviewを消すためにframeLayout.removeAllViews();を使用してすでに入っているviewを消そうとした。
#問題
frameLayout.removeAllViews();でviewを消すと見かけ上はviewを消すことができたが動画のように別のViewが存在するかのように動きがおかしくなった。これはframeLayoutの中にあるviewの座標を取得して跳ね返るようにしていたためだ。
具体的にはこのような感じでframeLayoutの中身を取得していた。

for (int i=0;i<frameLayout.getChildCount();i++){
    frameLayout.getChildAt(i);
}

20220205_160253.gif

removeAllViewsではviewの情報までは消し切れていない?と考えられる。
#解決
frameLayoutのなかに新しく作ったframeLayoutを入れてその中にviewを入れることで解決した。もちろん始めるボタンを押した際には親frameLayout.removeAllViews();をし新しく子frameLayoutを作り追加した。
#感想-宣伝-
初心者のころ作ったゲームのコードがあまりにもメンテナンスしにくかったのでリメイクしたときに詰まった部分です。

このゲームが収録されたゲームです。
よかったら遊んでみてください。
https://play.google.com/store/apps/details?id=com.nisinis.brainbreak

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?