2011-09-19 5 views
1

적어도 이미지를 스크롤해야하지만 이미지 자체를 스크롤하지 않으려합니다. 나는 내가 현재 단지Scrollable ImageView Android 문제 (overscrolling)

ImageView img = (ImageView)findViewById(R.id.mapimg); 
    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int maxX = (int)????; 
    int maxY = (int)????; 

    // set scroll limits 
    final int maxLeft = (maxX * -1); 
    final int maxRight = maxX; 
    final int maxTop = (maxY * -1); 
    final int maxBottom = maxY; 

내가 물음표 대신에 내가 거기에 넣을 수 있는지와 장난 봤는데으로 설정하는 것이있는 등 maxLeft, maxRight라는 변수를 가지고,하지만 난 것 같다 특히 다른 에뮬레이터를 사용하려고 할 때 방해가됩니다. 어떤 도움이라도 정말로 감사 할 것입니다! 고마워

답변

1

질문을 올바르게 이해하면 스크롤을 추가하기 위해 ImageView를 확장하고 싶습니다. 이 경우 getWindowmanager()를 사용하지 않으므로 전체 화면 (제목 표시 줄 포함)의 크기를 반환합니다. 오히려 ImageView를 확장하고 onMeasure에서 뷰의 크기를 가져 오려고합니다. 내 대답은 here 어디서 확대 기능을 추가하고 ImageView로 패닝을 확인할 수 있습니다.

매트릭스를 이미지와 동일하게 설정하고 이동하려면 setImageMatrix와 postTranslate를 사용했습니다. 이미지의 위치를 ​​추적하려면 다음을 사용했습니다.

float f[] = new float[9]; 
matrix.getValues(m); //see matrix documentation. inserts matrix values into f. 
float x = m[Matrix.MTRANS_X]; 
float y = m[Matrix.MTRANS_Y]; 

플로트 x 및 y는 이미지의 왼쪽 상단을 추적합니다. 다음 이벤트로 인해 이미지가 경계 밖으로 스크롤되는 경우 이미지의 테두리와 같도록 postTranslate를 조정해야합니다. 위에서 링크 된 대답은 시작하기 좋은 장소를 제공해야하며 추가 기능을 수행 할 필요가 없기 때문에 확대/축소 기능을 원할 경우 운이 좋습니다.