从本质上讲,我试图将多个ImageView(其中一个是平面图,另一个是矩形)叠加在一起,同时仍允许进行缩放。我想要的效果与这篇文章非常相似:http:/ /stackoverflow.com/questions/10482229/draw-rectangle-over-imageview-for-highlight-that-can-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);
}