如何在android中为图像添加多个图层

如何在android中为图像添加多个图层,android,android-imageview,Android,Android Imageview,我希望在应用程序中有一个(地图的)图像,并以编程方式添加 它上面的一些层(占位符、路径等) 我认为类似photoshop的图层方法可能会有所帮助,但我不知道从哪里开始。 任何指向教程或文档的简单示例/链接都很有用:) 谢谢我为您提供了一个简单的方法,您可以在此基础上进行构建: 创建一个空位图finalBitmap。这将是所有层合成的最终目的地 创建一个画布以绘制到最终位图。此画布将用于将所有层绘制到最终位图中 使用地图图像创建位图。使用画布将其绘制到finalBitmap。这将是第1层 使用相

我希望在应用程序中有一个(地图的)图像,并以编程方式添加 它上面的一些层(占位符、路径等) 我认为类似photoshop的图层方法可能会有所帮助,但我不知道从哪里开始。 任何指向教程或文档的简单示例/链接都很有用:)


谢谢

我为您提供了一个简单的方法,您可以在此基础上进行构建:

  • 创建一个空位图
    finalBitmap
    。这将是所有层合成的最终目的地
  • 创建一个
    画布
    以绘制到
    最终位图
    。此画布将用于将所有层绘制到最终位图中
  • 使用地图图像创建
    位图
    。使用画布将其绘制到
    finalBitmap
    。这将是第1层
  • 使用相同的方法放置标记、路线等。这些将是第2层、第3层等
示例代码:

//The empty Bitmap
finalBitmap = Bitmap.createBitmap(width, height , Bitmap.Config.ARGB_8888);
canvas = new Canvas(finalBitmap );
imageView.setImageBitmap(finalBitmap );


//Create the map image bitmap
Config config = Config.RGB_565;
Options options = new Options();
options.inPreferredConfig = config;
InputStream in = null;
Bitmap bitmap = null;
try {
        in = new FileInputStream(fMapImage);
        bitmap = BitmapFactory.decodeStream(in);
        if (bitmap == null)
            throw new RuntimeException("Couldn't load bitmap from asset :" + fMapImage.getAbsolutePath());
    } catch (IOException e) {
        throw new RuntimeException("Couldn't load bitmap from asset :" + fMapImage.getAbsolutePath());
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
            }
        }
}


//Draw the map image bitmap
Rect dst = new Rect(pt00.x, pt00.y, ptMM.x, ptMM.y);
canvas.drawBitmap(bitmap, null, dst, null);

//Here draw whatever else you want (markers, routes, etc.)

关于

好的,这可以工作,但是如果我想隐藏一个层,我可以用这种方法吗?谢谢。每次更改图层时,都需要重新绘制图层。如果要隐藏其中一个,只需不将其绘制到finalBitmap即可。好的,我宁愿使用类似于
层[1].hide()
,但我可以尝试找到一种方法来实现这一点……那么LayerDrawable呢?我自己从未使用过它,但它是一个从
可提取项数组中提取的类,当您的所有项都是可提取项时就可以了。但是您还需要绘制管线和标记,并且需要控制放置它们的位置。例如,要绘制路线,您将使用
canvas.drawLine()
,而这是使用
LayerDrawable
无法实现的。正如我所说,这是一种非常简单的方法。我用它来实现了一个类似的目标,我甚至在图像上实现了墨卡托投影,以便能够正确地放置标记和路线,它对我的目标非常有效。