2014-09-04 1 views
0

안녕하세요, 저는 현재 하나의 이미지를 슬라이스 앤 랜덤 화하는 퍼즐 작업을하고 있습니다. 설정시 수동으로 모든 모서리에 대해 2로 채우기를 설정 한 다음 퍼즐 완성이 완료되면 패딩을 모든 모서리에서 0으로 설정하여 이미지를 전체적으로 표시해야합니다. 문제는 퍼즐의 오른쪽 만 완전히 패딩을 제거하는 동안 일어나는 이상한 일입니다. 다른쪽에는 여전히 바닥 부분에 패딩이 있습니다. 이는 사양이 낮은 기기에서만 발생합니다.패딩 설정 postInvalidate는 퍼즐의 왼쪽 하단에 패딩을 제거하지 않음

if(true){     
    enable_puzzle = false; 
    for (int i=0; i < parent.getChildCount(); i++){ 
     LinearLayout cont = (LinearLayout) parent.getChildAt(i); 
     for (int c = 0; c < cont.getChildCount(); c++){ 
      View v = cont.getChildAt(c); 
      v.setClickable(false); 
      v.setPadding(0,0,0,0); 
      v.postInvalidate(); 
     } 
     cont.postInvalidate(); //Tried this didn't work 
    } 
    parent.postInvalidate(); //Tried this didn't work 
} 

나는 그것이 아주 간단 내 레이아웃을 배치하는 방법의 더 나은 이해를 위해 (넥서스 원과 비슷하게)

여기에 퍼즐을 완료 한 후 패딩의 설정에 대한 내 코드입니다. 나는 verticalLayout을 가로 방향으로 가지고 있는데, 이것은 세로 방향으로 부모 컨테이너에 위치 할 imageViews를 가지고있다.

다음은 sample의 스크린 샷입니다.

Puzzle 1

를 (왼쪽 아래 부분에 이상한 패딩 참조) 작성에 그리고 완료에 따라 퍼즐 : 이것은 내 넥서스 S의 스크린 샷

enter image description here

입니다 에뮬레이터. 낮은 사양의 실제 장치에서도 똑같은 일이 발생합니다.

UPDATE : 그것을 검사시

주 원인은 이미지 컨테이너의 폭임을 보인다. 필자는 4x4 퍼즐을 가지고 고정 된 크기 대신 체중을 사용하기 때문에 각 이미지의 너비가 고르게 분산되어 1px/dp 차이가 발생합니다. 이제 유일한 문제는 각 가로 세로 레이아웃의 너비를 나누고 각 이미지 뷰에 대해 균등 한 결과를 얻으려면 어떻게 할 수 있습니까?

답변

1

해결 방법이 있습니다. 패딩을 제거하기 위해 지금 수행중인 것과 같은 onPuzzelCompleteListener()와 같은 리스너를 만들 수 있습니다. 여기서 완전한 이미지로 ImageView를 보여줄 수 있습니다. 이제는 패딩 문제를 해결해야합니다.

+0

그래,이게 더 나은 해결책을 찾기 위해 노력 하겠지만, 지금 당장 내가 한 일 이었어. – KaHeL

관련 문제