STM32
直播中

石飞鹏

8年用户 1082经验值
私信 关注
[问答]

使用iconview控件时,能否直接从sd卡中读取bmp格式的图片进行显示啊 ?

请教下,使用 iconview 控件时,能否直接从sd卡中读取bmp格式的图片进行显示啊 ?

我看很多貌似都是 先把 图片文件转换为 .c 或者是 .dat 格式的,有没有什么方法在使用 iconview 控件时,直接读取 sd 卡 里面的图片
进行显示 ??

另外如果 可以的话,那直接读取到的 图片 显示的 坐标又该如何确定啊  ???

因为有可能图片名称发生了变化,那么读取到的图片文件的先后顺序 就不一定了

回帖(2)

赵秀英

2024-4-28 15:47:08
搜素功能和格式问题,改成格式一致看看呢
举报

笔画张

2024-4-28 17:21:33
在使用iconview控件时,确实可以直接从SD卡中读取bmp格式的图片进行显示。以下是实现这一功能的基本步骤:

1. 首先,确保你的设备已经连接了SD卡,并且已经获得了读写权限。

2. 使用Java的File类来访问SD卡上的文件。例如,如果你想从SD卡的根目录下读取图片,可以使用以下代码:

```java
File sdCard = Environment.getExternalStorageDirectory();
File dataDir = new File(sdCard.getAbsoluteFile(), "YourDirectoryName");
```

3. 接下来,使用File.listFiles()方法获取目录中的所有文件。然后,使用一个循环来遍历这些文件,并检查它们是否是bmp格式的图片。可以使用文件名的后缀来判断文件类型:

```java
File[] files = dataDir.listFiles();
for (File file : files) {
    if (file.getName().endsWith(".bmp")) {
        // 处理bmp图片
    }
}
```

4. 对于每个bmp图片,可以使用Android的BitmapFactory来将其解码为一个Bitmap对象:

```java
Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
```

5. 将解码后的Bitmap对象添加到iconview控件中。首先,创建一个ImageView对象,并将Bitmap设置为其图像:

```java
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(bitmap);
```

6. 然后,将ImageView添加到iconview控件中。你需要确定ImageView的坐标,这可以通过设置其LayoutParams来实现:

```java
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT
);
imageView.setLayoutParams(layoutParams);
```

7. 最后,将ImageView添加到iconview控件中:

```java
iconView.addView(imageView);
```

8. 如果图片名称发生变化,你可以通过比较文件的最后修改时间或者使用其他逻辑来确定它们的显示顺序。

通过以上步骤,你应该能够实现在使用iconview控件时直接从SD卡中读取bmp格式的图片进行显示。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分