从资产中读取图像并填写数组

时间:2017-04-18 07:14:31

标签: java android android-assets

我有一个画廊 我的画廊里有一些照片,里面有可画画。像这样我首先把这个放入Integer数组中。

Integer stickers_big[] = { R.drawable.stck1, R.drawable.stck2,...}

和我的适配器:

    class stickersAdapter extends BaseAdapter {
    Context ctx;

    public stickersAdapter(FirstActivity act) {
        // TODO Auto-generated constructor stub
        this.ctx = act;
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return stickers_drawable.length;
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView imageview = new ImageView(ctx);
        imageview.setImageResource(stickers_drawable[position].intValue());
        imageview.setScaleType(android.widget.ImageView.ScaleType.FIT_XY);

        return imageview;
    }

}

现在我想把我的图片放到资产中。我喜欢这个,我读了我的图像名称,然后把它设置成我的想象。但我只读了一个图像名称。我不知道如何阅读我所有图像的名称并打开它们。

 public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        ImageView imageview = new ImageView(ctx);
        AssetManager assetManager = getAssets();
        try {
            // get input stream
            InputStream ims = assetManager.open("stck1.png");

            // create drawable from stream
            Drawable d = Drawable.createFromStream(ims, null);

            // set the drawable to imageview
            imageview.setImageDrawable(d);
        }
        catch(IOException ex) {

        }


        return imageview;
    }

}

How to read ALL of my images then open them?

3 个答案:

答案 0 :(得分:1)

  

现在我想把我的图片放到资产中。

首先将图像保存到图像文件夹中,然后使用这种方式

ReportViewerControl.Winform

答案 1 :(得分:1)

在assets目录中创建子文件夹。使用getAssets()。list()从资产中获取所有文件名:

 String[] images =getAssets().list("images");
ArrayList<String> listImages = new ArrayList<String>(Arrays.asList(images));

Now to set image in imageview you first need to get bitmap using image name from assets :

InputStream inputstream=mContext.getAssets().open("images/"
                                      +listImages.get(position));
Drawable drawable = Drawable.createFromStream(inputstream, null);
imageView.setImageDrawable(drawable);

答案 2 :(得分:0)

假设您在资产文件夹中有此层次结构

assets
 |__img1
 |__img2
 |__img3 

你可以像这样得到它们

try {  
    String[] list = getAssets().list("");

    for(String img: list ){
        //do your stuff here
       }
    } catch (IOException e) {
             e.printStackTrace();
     }

如果您在资源中有子文件夹,请将其名称放在list("sub_folder");

您可以在活动中获取此列表,如果您处于片段状态,则必须执行getActivity()getAssets().list("");。获得图像名称列表后,您可以将其传递给适配器,并可以在getView()方法w.r.t位置使用它。