2

从本质上讲,我正在尝试将多个 ImageView(其中一个是平面图,另一个是矩形)层叠在一起,同时仍然允许捏缩放。我要的效果与这篇文章非常相似:http://stackoverflow.com/questions/10482229/draw-rectangle-over-imageview-for-highlight-that-c​​an-be-zoom-in-out-在-android?rq=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