显示图片

本文介绍了一种在Android应用中从SD卡批量加载图片的方法。通过创建一个自定义的Activity来实现图片的逐个加载,并将所有图片保存到内存中的Bitmap数组列表。此方法能够有效地避免逐张加载图片造成的效率低下。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将sd卡的图片一张张显示出来,需要先全部加载然后在显示,如果加载一张显一张比较慢

public class Pics extends Activity {
private ImageView image;
private String[] mFiles;
private int mFilePosition = 0;
private ArrayList<Bitmap> bitArray;
private Bitmap b;
private int i;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    image = (ImageView) findViewById(R.id.image);
    bitArray = new ArrayList<Bitmap>();
    File images = Environment
            .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    try {
        images.createNewFile();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Log.e("file path", images.getAbsolutePath());
    File[] imagelist = images.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return ((name.endsWith(".jpg")) || (name.endsWith(".png")));
        }
    });
    mFiles = new String[imagelist.length];
    Log.e("size", imagelist.length + "");
    for (int i = 0; i < imagelist.length; i++) {
        mFiles[i] = imagelist[i].toString();
    }
    getImageFromSDCard();
}

public void getImageFromSDCard() {

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 8;
    try {
        for (int j = 0; j < mFiles.length; j++) {
            Log.d("", mFiles[mFilePosition]);
            b = BitmapFactory.decodeFile(mFiles[j], null);
            bitArray.add(b);
        }

    } catch (Exception e) {
        // Log error
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值