마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

동적으로 생성한 이미지뷰의 충돌체크를 해주는방법이 궁금합니다.

0 추천
FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT);

                imageView = new ImageView(MainActivity.this);
                imageView.setImageResource(R.drawable.sun);
                imageView.setLayoutParams(layoutParams);
                imageView.setX(s);
                imageView.setY(s);

                frameLayout.addView(imageView);

위처럼 이미지뷰를 터치할때마다 동적으로 생성되게 만들었습니다.

 

이동시키는것은 TranslateAnimation를 이용해서 위의 이미지뷰를 이동시켰습니다.

if (imageView.getX() <= imageView2.getX() && imageView.getX() + imageView.getWidth() >= imageView2.getX() || imageView2.getX() <= imageView.getX() && imageView2.getX() + imageView2.getWidth() >= imageView.getX()) {
    if (imageView.getY() <= imageView2.getY() && imageView.getY() + imageView.getHeight() >= imageView2.getY() || imageView2.getY() <= imageView.getY() && imageView2.getY() + imageView2.getHeight() >= imageView.getY()) {
        Toast.makeText(getApplicationContext(), "충돌", Toast.LENGTH_SHORT).show();
    }
}

그리고 이렇게 충돌체크를 해주었습니다. 근데 안되네용 ㅠㅠ xml에서 이미지뷰를 하나만들어주고 동적으로 만든것과 비교해서 충돌하면 토스트를 출력하게 했는데, xml에 이미지뷰를 두개 만들어주고 충돌했을때는 충돌체크가 됩니다. 근데 동적으로 생성한것과는 안되네요 ㅠㅠ 해결좀 해주십시요!

Soojd2231 님이 2018년 1월 12일 질문

1개의 답변

0 추천

TranslateAnimation 같은 일반 Animation은 실제 View를 이동시키더라도,

View가지고 있는 실제 값들은 변경시키지 않습니다.

정말로 움직이는 용도로만 쓸 수 있습니다.

그래서 실제 값들을 변경시키면서 Animation을 적용하는 'Property Animation'이라는 것이

API 11부터 반영되었습니다. Property Animation(Animator)으로 구현하면

충돌 인식 로직도 정상적으로 동작할 겁니다.

https://developer.android.com/guide/topics/graphics/prop-animation.html

디자이너정 (42,810 포인트) 님이 2018년 1월 12일 답변
...