0

私のアプリのアクティビティの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);

         ...
    }
    ...        
}

前もって感謝します。

4

1 に答える 1

1

なぜあなたはyを作らないのですか

<ZoomButton
android:id="@+id/zoomButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageButton1"
android:layout_centerHorizontal="true"
android:src="@android:drawable/btn_plus" />

ユーザーが何をすべきかを知ることができるようにします。2 * tabで作成する場合は、最初のタブでタイマータスクを開始する必要があり、ユーザーが2番目のタブを再度提示する場合は、タイマータスクで実装する必要がある***msでズームする必要があります。

ズームした画像を取得するには、

int zoom = 2;
Bitmap i = Bitmap.createScaledBitmap(image, image.getWidth() * zoom, image.getHeight() * zoom, false);

私はあなたの質問が正しいことを理解していることを願っています。

于 2012-05-14T06:03:15.580 に答える