2

本質的に、ピンチズームを可能にしながら、複数の ImageView (そのうちの 1 つは平面図、もう 1 つは四角形) を互いの上に重ねようとしています。私が目指している効果は、この投稿と非常によく似ています: http://stackoverflow.com/questions/10482229/draw-rectangle-over-imageview-for-highlight-that-c​​an-be-zoom-in-out-アンドロイド?rq=1. ただし、(ユーザーが画面をタップしたときではなく) アプリケーションの起動時に四角形を表示し、時間の経過とともにその位置を更新する必要があります。

私の画像の 1 つは、間取り図の SVG ファイルです。AndroidSVG ライブラリ (https://code.google.com/p/androidsvg/) を使用して、SVGImageView として Android にレンダリングしています。私の現在の実装では、この SVG ファイルのピンチ ズームとパンが可能です (アプリケーションの起動時: http:/ /imgur.com/SceJuni、ピンチ ズーム後: http:/ /imgur.com/wL8anKd)。

(リンクにスペースがあり申し訳ありません。評判ポイントが 10 に達していないため、複数のリンクを投稿することはできません)

次に、この SVGImageView を四角形でオーバーレイして、このマップ上の場所を示す必要があります。SVGImageView がズームインおよびズームアウトするのに合わせて、この四角形をズームインおよびズームアウトします。このリンク (https://github.com/matabii/scale-imageview-android) から ScaleImageView クラスを使用することを検討しましたが、どのように進めればよいかわかりません。

リポジトリは次のとおりです: https://github.com/mthai95/SVGApp

そして、私がこれまでに持っているものは次のとおりです。

import android.app.Activity;
import android.graphics.*;
import android.os.Bundle;
import android.util.FloatMath;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import com.caverock.androidsvg.SVGImageView;

public void onCreate(Bundle savedInstanceBundle) {
    super.onCreate(savedInstanceState);
    LinearLayout layout = new LinearLayout(this);
    SVGImageView svgImageView = new SVGImageView(this);
    svgImageView.setImageAsset("w1a.svg");
    svgImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    svgImageView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            ... pinch-zoom and pan ...
        }
    });
    layout.addView(svgImageView,
            new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    setContentView(layout);
}
4

0 に答える 0