Android:如何创build现有位图的新副本?

我将创build一个简单的楼层地图指南。 我有不同的地板和相应的地图。 FLOORS是button,MAPS是存储在SD卡中的png文件。 当我点击1F和相应的1Fmap将显示在其他楼层。

我在想以下几点:

  1. 一个图像视图来显示选定的地图。
  2. 散列图(或)来处理位图。 用于根据所选楼层获取位图。 然后通过setImageBitmap(..)设置为ImageView
  3. 在点击楼层button时下载要分配在Hashmap中的位图。 然后在点击其他楼层时创build位图,将其设置为imageview,然后创build散列表。

这是我的技术/devise问题:

  1. 如何创build位图的副本?
  2. 可以将它存储到hashmap中,或者每次点击楼层button时从sdcard中获取它。
  3. 如果我将使用HashMap,可以使用Integer(floor numbers)或String(floornames)作为map key吗?

更新:另外,我的目标是最多20层(这意味着20 512×512 PNG文件…我想也调整到256×256像别人build议)。

Solutions Collecting From Web of "Android:如何创build现有位图的新副本?"

  1. 要创build位图副本,您可以使用:

    Bitmap newBmp = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);

  2. 您可以逐步从SD卡获取图像。 这个实现没有问题。

  3. 如果您使用的是HashMap,那么您可以将图像URL用作Hashmap的Key。

这个答案帮助了我:

https://stackoverflow.com/a/17068594/1373248

代码如下:

 Bitmap bmp1 = BitmapFactory.decodeResource(cont.getResources(), R.drawable.image); //then create a copy of bitmap bmp1 into bmp2 Bitmap bmp2 = bmp1.copy(bmp1.getConfig(), true); 
 Bitmap OLDBitmap = getBitmap(); Bitmap newBmp = Bitmap.createBitmap(OLDBitmap); 

根据情况你可以使用:

 Bitmap src = ...; Bitmap dst = src.copy(src.getConfig(), src.isMutable);