android访问asset目录下的资源

android提供了AssetManager来访问asset目录下的资源,

在activity中通过getAssets()获取AssetManager

常用的api如下:

1、列举路径下的资源String[] list(String path)

2、InputStream open(asset目录下的资源路径)

下面是放问asset目录下的图片的代码

package com.example.qunzheng.customerview;

import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import java.io.IOException;
import java.io.InputStream;


public class VisitAssetsResourceActivity extends Activity {

    private ImageView imageView;
    private String[] images = null;
    private AssetManager assetManager;

    private int curImageIndex = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_visit_assets_resource);

        imageView = (ImageView) findViewById(R.id.image);
        assetManager = getAssets();
        try {
            images = assetManager.list("");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void viewImage(View view) {
        if (curImageIndex >= images.length) {
            curImageIndex = 0;
        }
        /**
         * 如果图片资源还没有释放,则释放该资源,防止内存溢出
         */
        BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable();
        if (drawable != null && drawable.getBitmap() != null && !drawable.getBitmap().isRecycled()) {
            drawable.getBitmap().recycle();
        }

        try {
            InputStream assertFile = assetManager.open(images[curImageIndex++]);
            imageView.setImageBitmap(BitmapFactory.decodeStream(assertFile));
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

  

 

posted on 2015-02-25 09:24  石头hah  阅读(1119)  评论(0编辑  收藏  举报

导航