我将创建一个简单的楼层地图指南。我有不同的FLOORS和相应的MAPS。 FLOORS是按钮,MAPS是存储在SD卡中的png文件。当我点击1F时,将显示相应的1Fmap,因此与其他楼层一起显示。
我正在考虑以下事项:
以下是我的技术/设计问题:
更新 另外,我的目标是最多20个楼层(这意味着20个512x512 png文件...我也想将其调整为其他人建议的256x256。)
答案 0 :(得分:150)
这个答案对我有所帮助:
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);
答案 1 :(得分:3)
Bitmap OLDBitmap = getBitmap();
Bitmap newBmp = Bitmap.createBitmap(OLDBitmap);
答案 2 :(得分:3)
根据您可以使用的情况:
Bitmap src = ...;
Bitmap dst = src.copy(src.getConfig(), src.isMutable);
下面的代码会创建一个副本。这意味着它从源位图复制像素并创建全新的Bitmap对象。我之所以指出它是因为在互联网上你可以找到许多使用Bitmap.createBitmap()的例子,它不能保证新的位图是一个对象还是对旧的位图的引用。根据情况,您可能会遇到问题行为。
答案 3 :(得分:0)
您将获得位图副本为bitmap2
位图bitmap2 = bitmap1.copy(bitmap1.getConfig(),true);
答案 4 :(得分:0)
public static Bitmap cloneBitmap(Bitmap bitmap) {
return bitmap.copy(bitmap.getConfig(),bitmap.isMutable());
}
答案 5 :(得分:0)
Kotlin扩展名:
fun Bitmap.copy(): Bitmap? = copy(config, isMutable)
答案 6 :(得分:-5)
要创建位图副本,您可以使用:
Bitmap newBmp = Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter);
您可以逐步从SD卡获取图像。这个实现没问题。
如果您使用的是Hashmap,则可以将图片网址用作Hashmap的密钥。