Android:使用放大/缩小在SVGImageView上绘制矩形

时间:2014-07-11 22:24:07

标签: android svg imageview androidsvg

从本质上讲,我试图将多个ImageView(其中一个是平面图,另一个是矩形)叠加在一起,同时仍允许进行缩放。我想要的效果与这篇文章非常相似:http:/ /stackoverflow.com/questions/10482229/draw-rectangle-over-imageview-for-highlight-that-c​​an-be-zoom-in-外 - 内 - 机器人?RQ = 1。但是,我希望矩形在应用程序启动时出现(与用户点击屏幕时相反)并随时间更新其位置。

我的一张图片是平面图的SVG文件。我使用AndroidSVG库(https:/ / code.google.com/p/androidsvg/)将其作为SVGImageView呈现给Android。我当前的实现允许对此SVG文件进行缩放和平移(在应用程序启动时:http:/ / imgur.com/SceJuni;在缩放缩放后:http:/ /imgur.com/wL8anKd)。

(对不起链接中的空格;我没有10个声望点,因此我无法发布多个链接)

现在我需要用一个矩形覆盖这个SVGImageView来表示这个地图上的位置。当SVGImageView放大和缩小时,我希望这个矩形可以放大和缩小。我考虑过使用此链接中的ScaleImageView类(https:/ /github.com/matabii/scale-imageview-android),但现在我不确定如何继续。

这里是回购: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);
}

0 个答案:

没有答案