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