在Android上的ImageViewTouch中的图像顶部覆盖第二张图像



很难相信这是不可能的。我在ImageViewTouch视图中有一个地图,我正试图在我根据用户的位置移动(在地图图像内)的图像上添加一个"你在这里"图像。

当用户在地图上平移时,我希望你在这里也通过在ImageViewTouch内平移。(理想情况下,我也希望它缩放,但我会采取我能得到的!)

我考虑过使用Canvas来创建一个新的Bitmap每次用户的位置变化,但考虑到地图很大,它不会是非常性能。

有什么办法可以做到吗?

我明白了!而不是使用CanvasBitmap,这是较慢的,导致问题,我能够使用LayerDrawable。如果这对将来有帮助,这是我的代码。

public void updateYouAreHere(@Nullable MapLocation location, boolean initial){
    Resources resources = getResources();
    Drawable drawable;
    if (location == null){
        drawable = MiscUtil.getDrawable(resources, R.drawable.map_image);
    }else{
        Drawable[] layers = new Drawable[]{
                MiscUtil.getDrawable(resources, R.drawable.map_image),
                MiscUtil.getDrawable(resources, R.drawable.you_are_here)
        };
        mapDrawable = new LayerDrawable(layers);
        final int iconWidth = 50;
        final int iconHeight = 86;
        mapDrawable.setLayerInset(1, location.x, location.y,
                (int)(Globals.Map.MapWidth) - location.x - iconWidth, (int)(Globals.Map.MapHeight) - location.y - iconHeight);
        drawable = mapDrawable;
    }
    if (!initial) {
        Matrix currentPosition = mapScrollView.getDisplayMatrix();
        float minScale = mapScrollView.getMinScale();
        float maxScale = mapScrollView.getMaxScale();
        mapScrollView.setImageDrawable(drawable, currentPosition, minScale, maxScale);
    }else{
        mapScrollView.setImageDrawable(drawable);
    }
}
private class MapLocation {
    public int x;
    public int y;
    public MapLocation(int x, int y){
        this.x = x;
        this.y = y;
    }
}

另外,MiscUtil.getDrawable只是一个包装器,根据SDK版本调用相应的getResources().getDrawable()函数。

最新更新