如何在android中为图像添加多个图层
我希望在应用程序中有一个(地图的)图像,并以编程方式添加 它上面的一些层(占位符、路径等) 我认为类似photoshop的图层方法可能会有所帮助,但我不知道从哪里开始。 任何指向教程或文档的简单示例/链接都很有用:)如何在android中为图像添加多个图层,android,android-imageview,Android,Android Imageview,我希望在应用程序中有一个(地图的)图像,并以编程方式添加 它上面的一些层(占位符、路径等) 我认为类似photoshop的图层方法可能会有所帮助,但我不知道从哪里开始。 任何指向教程或文档的简单示例/链接都很有用:) 谢谢我为您提供了一个简单的方法,您可以在此基础上进行构建: 创建一个空位图finalBitmap。这将是所有层合成的最终目的地 创建一个画布以绘制到最终位图。此画布将用于将所有层绘制到最终位图中 使用地图图像创建位图。使用画布将其绘制到finalBitmap。这将是第1层 使用相
谢谢我为您提供了一个简单的方法,您可以在此基础上进行构建:
- 创建一个空位图
。这将是所有层合成的最终目的地finalBitmap
- 创建一个
以绘制到画布
。此画布将用于将所有层绘制到最终位图中最终位图
- 使用地图图像创建
。使用画布将其绘制到位图
。这将是第1层finalBitmap
- 使用相同的方法放置标记、路线等。这些将是第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
无法实现的。正如我所说,这是一种非常简单的方法。我用它来实现了一个类似的目标,我甚至在图像上实现了墨卡托投影,以便能够正确地放置标记和路线,它对我的目标非常有效。