私のアプリのアクティビティの1つは、事前に決定されたマップピンの位置を含む静的マップ(ローカルpngファイル)を表示する必要があります。静的マップのサイズは480pxx 904 pxで、上下にスクロールしてマップとそのさまざまなピンの位置を表示できるように、scrollviewを使用して実装しました。ピンはImageButtons(xmlを使用する代わりにプログラムで作成されたもの)として実装され、それらをクリックすると、他の対応する新しいアクティビティが起動します。ユーザーが地図上の任意の場所をダブルタップして、タップされた領域にズームインする(たとえば、2倍)(したがって、タップされた領域の周りのピンImageButtonsがズームされる)単純なズーム機能を実装する方法を知りたいです。また)。ピンチやマルチタッチアクションは許可されないため、ダブルタップするだけでタップした領域にズームインし、もう一度ダブルタップしてズームアウトするだけです。ところで、私のアクティビティはランドスケープモードのみなので、向きを切り替えることを心配する必要はありません。何かアドバイスはありますか?
これがアクティビティのxmlファイルの一部です
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rlayoutResultMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="0dp" >
<ScrollView
android:id="@+id/scrollResultMap"
android:fillViewport="true"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:scrollbars="none" >
<RelativeLayout
android:id="@+id/rlayoutScrollMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imgResultMap"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentTop="true"
android:src="@drawable/map_base"/>
</RelativeLayout>
</ScrollView>
...
</RelativeLayout>
そして、これが私のJavaクラスの一部です。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result_map);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
mapLocArray = getMapCoordinates();
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rlayoutResultMap);
// Loop through and create the map location buttons
int x, y;
for (int i=1; i<=maxMapLoc; i++ ) {
mapLocation = i;
ImageButton btnMapLoc = new ImageButton(ResultMapActivity.this);
RelativeLayout.LayoutParams vp = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
x = mapLocArray[i-1].getX();
y = mapLocArray[i-1].getY();
vp.setMargins(x,y,0,0);
btnMapLoc.setLayoutParams(vp);
btnMapLoc.setBackgroundColor(Color.TRANSPARENT);
btnMapLoc.requestLayout();
String imgNameNormal = "map_loc_" + mapLocation + "_normal";
int idNormal = getResources().getIdentifier(imgNameNormal,"drawable",getPackageName());
btnMapLoc.setImageResource(idNormal);
rl.addView(btnMapLoc, vp);
...
}
...
}
前もって感謝します。