이 내가 나 자신의 이미지를 표시하고 에서 사용자 탭이 필요 발견이 link
에서 찾을 것입니다 탐색하고 수행 할 이미지의 다른 부분. 내가 필요한 것을 스케치 한 후, 내가 원했던 것이 HTML 맵 태그와 같은 것이지만 안드로이드 뷰에서 분명하게 나타났습니다. 조금 더 생각하고 이것이 유용한 도구가 될 것이라고 결정했습니다 사용할 수 있습니다.
결과 코드 :
는 XML에서 지역 태그 목록을 허용합니다 레이아웃에 당김이나 비트 맵으로 이미지를 지원는 자원 XML로 잘라 내기 및 붙여 넣기 HTML 영역 태그의 사용을 가능하게 (즉, HTML 맵과 이미지를 취하여 최소한의 편집으로 을 사용할 수 있음) 이미지가 장치 화면보다 큰 경우 패닝을 지원합니다. 핀치 줌을 지원합니다. 영역 을 두드리면 콜백을 지원합니다. 거품 텍스트로 보여주는 주석을 지원하고, 거품이 코드는 2012 년 3 월 GitHub – Android Image Map
업데이트 2에서 찾을 수 있습니다 탭 경우 콜백을 제공 : 추가 항상 원본 이미지 비트를 사용하여 이미지의 크기를 조절하는 옵션을 선택합니다. 특정 이미지는 위아래로 크기를 조정하면 이미지 품질이 좋은 이 손실됩니다. 항상 원래 비트 에서 크기를 조정하면 최상의 이미지를 얻을 수 있지만 추가 메모리가 필요합니다. 의 트레이드 오프는 이제 끝납니다.
구현에 대한 몇 가지 간단한 참고 사항이 있습니다. 몇 가지 주요 영역에 대한 세부 정보가있는 후속 게시물을 작성하겠습니다.
지도를 img와 연결하기가 쉽기 때문에 HTML의 img 태그에서 을 쉽게 처리 할 수 있습니다.
이 지역지도가 고해상도/XML/map.xml에서 프로젝트에 지정된
<!--?xml version="1.0" encoding="utf-8"?-->
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ctc="http://schemas.android.com/apk/res/com.ctc.android.widget"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.ctc.android.widget.ImageMap
android:id="@+id/map"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:src="@drawable/usamap"
ctc:map="usamap"/>
</LinearLayout>
한 HTML지도를 통해 차이가 각 점이다 : 그냥지도의 이름이 에서 레이아웃을 사용하는 공급 영역에는 ID가 있어야합니다. 이 요구 사항에 대해 을왔다 갔다하며 코드가 바뀌어 id가없는 영역에 을 허용 할 수 있습니다. 코드는 name 속성을 사용합니다 ( ). 그렇지 않으면 title 또는 alt를 찾습니다. 현재 구현에는 각 영역에 대한 이름이 필요하지만 쉽게 변경할 수 있습니다 ( ).시스템은 dpi로 기초하여 상기 단말기로 이미지를 적합하지 않도록
<!--?xml version="1.0" encoding="utf-8"?-->
<maps xmlns:android="http://schemas.android.com/apk/res/android">
<map name="gridmap">
<area id="@+id/area1001" shape="rect" coords="118,124,219,226" />
<area id="@+id/area1002" shape="rect" coords="474,374,574,476" />
<area id="@+id/area1004" shape="rect" coords="710,878,808,980" />
<area id="@+id/area1005" shape="circle" coords="574,214,74" />
<area id="@+id/area1006" shape="poly" coords="250,780,250,951,405,951" />
<area id="@+id/area1007" shape="poly" coords="592,502,592,730,808,730,808,502,709,502,709,603,690,603,690,502" />
</map>
<map name="usamap">
<area id="@+id/area1" shape="poly" coords="230,35,294,38,299,57,299,79,228,79" />
...
</map>
</maps>
이미지 자체가 고해상도
/그리기-nodpi에 배치된다. 이렇게하면 지역 좌표가 표시된 이미지 에 제대로 매핑됩니다. 여기
은 레이아웃보기를 발견하고이 도움이 될 것입니다
public class ImageMapTestActivity extends Activity {
ImageMap mImageMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// find the image map in the view
mImageMap = (ImageMap)findViewById(R.id.map);
// add a click handler to react when areas are tapped
mImageMap.addOnImageMapClickedHandler(new ImageMap.OnImageMapClickedHandler() {
@Override
public void onImageMapClicked(int id) {
// when the area is tapped, show the name in a
// text bubble
mImageMap.showBubble(id);
}
@Override
public void onBubbleClicked(int id) {
// react to info bubble for area being tapped
}
});
}
}
희망이 클릭 핸들러에 추가 샘플 활동이다.
감사합니다. 시도해 볼 것이지만 리샘플링 된 이미지에 아이콘을 두어야하는 실제 위치가 아닙니다. 그것은 흥미로운 해결책이지만. – MichelReap
사실 저는 이것을 사용하지 않았지만 구현을 시작했을 때 실제로 어떻게 작동하는지 더 잘 알게 될 것입니다. – KDeogharkar
좌표를 볼 수 있습니다. – KDeogharkar