아래 답변에 대해 이어지는 질문입니다.

[안드로이드-JAVA] 갤러리뷰에서 생성된 이미지뷰 드래그 앤 드랍 에 대한 답변

1) 먼저 이미지가 여러 개 복사되는 현상에 대해서 예상되는 부분은

onItemClick() 메소드 부분에 있는 for문이 어떤 용도인지 모르겠습니다만

아래와 같이 for문이 돌면서 addView()를 여러번 실행하여 100개의 이미지가 겹쳐 써진 것이 아닌가 싶습니다.

for (int i = 0; i < 100; i++) {
    ...
    layout.addView(goods);
    ...
}

즉, 이미지가 복사되는 것이 아니라 100개의 이미지가 겹쳐 그려져 있기 때문에 드래그해도 계속 이미지가 나타나 보이는 것 같습니다.

for문을 빼 보시거나 for문의 i < 100라고 되어있는 부분을 i < 2 로 바꿔보면 확인이 가능할 것 같습니다.

 

2) 그리고 클릭한 뷰에 액션을 적용하는 버튼을 만드는 방법에 대해서는 아래의 방식도 참고가 되지 않을까 싶습니다.

일단 currentSelectedView라는 이름으로 객체를 전역으로 선언해놓고

소스 상의 ACTION_UP 부분에 아래와 같이 현재 클릭한 뷰를 currentSelectedView에 저장합니다.

...
} else if (event.getAction() == MotionEvent.ACTION_UP) {
    ...
    currentSelectedView = goods
    ...
}
...

그리고 로테이트 버튼 등을 클릭했을 때 아래와 같이 처리하도록 합니다.

if(currentSelectedView != null) {
    currentSelectedView.setRotation(90);
}

 

Android Studio

currentSelectedView = goods로 goods값 저장 시 발생하는 또 다른 문제에 대해서

0
먼저, 답변 너무 감사드립니다, 무린님!! 덕분에 1번 문제는 잘 해결이 되었습니다.   그런데, 여전히 버튼 클릭이벤트가 문제여서 추가 질문드립니다 ㅠㅠ (생성한 ImageView들이 순차적으로 순번을 가진다고 가정했을 때, 처음 생선..

먼저, 답변 너무 감사드립니다, 무린님!!

덕분에 1번 문제는 잘 해결이 되었습니다.

 

그런데, 여전히 버튼 클릭이벤트가 문제여서 추가 질문드립니다 ㅠㅠ

(생성한 ImageView들이 순차적으로 순번을 가진다고 가정했을 때, 처음 생선된 애를 1번, 후에 생성된 애를 2번)

일단 버튼 클릭시 이벤트 적용은 됩니다만, 방금 생성된 애들만 적용이 된다는 제한이 있습니다.

- 이전에 생성된 이미지뷰들을 바꾸고 싶을 때, 버튼 클릭시 이벤트 적용은 방금 생성된 애만 적용이 됩니다.

- 갤러리 뷰에서 클릭시 생성된 시점의 currentSelectedView가 goods값을 계속 가지고 있으니까, 이전에 생성한

애들은 이벤트 적용이 안된다고 생각은 듭니다.

 

즉 1번 클릭시 1번을 바꾸고 싶은데, 1번 클릭시에도 후에 생성이 된 2번에 이벤트가 적용이 된다는 문제입니다.

앞에 올렸던 게시글과 큰 코딩의 변화는 없어서 생략하겠습니다.

 

염치없지만, 도움 부탁드리겠습니다 ㅠㅠㅠ

댓글

1개의 답변

0
혹시 다음과 같이 currentSelectedView를 소스 상의 onClick 메소드에서 지정해보면 어떨지요. goods.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { view1=v; c..

혹시 다음과 같이 currentSelectedView를 소스 상의 onClick 메소드에서 지정해보면 어떨지요.

goods.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        view1=v;
        currentSelectedView = v; // currentSelectedView로 설정
    }
});

 

무린 2021-02-18
사탕 주기
무린 님께서 2021-02-18에 Android Studio에 올린 글
보관하기
0
 
내일은코딩왕 2021-02-19
항상 답변 감사드립니다. 무린님!!
우선 제가 이해한대로, 다음과 같이 코딩을 해봤습니다!!

goods.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
view1 = (ImageView) v;
currentSelectedView = view1;
}
});

goods 클릭 시에 이벤트를 줘서, 그 값을 currentSelectedView에 저장하라는 말씀으로 이해했습니다.
아마 제가 이해한 내용을 잘못 구현했는지, 실행이 안되네요 ㅠㅠㅠ

일단 계속 저거만 하고 있기 그래서 현재 다른 작업 진행중입니다!!
나중에 다른 질문 보게되면, 그때 한번 더 도와주시면 감사하겠습니다.
0
 
무린 2021-02-19
네. 저도 코드를 실행해본 것은 아니라 답변이 부족했을 수 있습니다.
하시면서 또 질문 남겨주시면 언제든지 답변 드리겠습니다~
화이팅~!!

댓글

조회수 786
답글 1
URL