本地资源的读取


两种资源文件
一.读取Assets文件夹中的文件
1.创建工具类AssetUtils

2.自定义参数读取字符串,参数固定(下图时读Json文件),用AssetManager来读文件夹

        public static String getJosonFromAssets(Context context,String filename){
        //1.获取Assets文件夹管理器(固定写法)
        AssetManager am =context.getResources().getAssets();

        //输出流
        ByteArrayOutputStream baos=new ByteArrayOutputStream();
        //2.获取文件输入流
        try {
            //读文件夹中的文件
            InputStream is=am.open(filename);


            //读取内容到内存流
            int hasRead=0;
            byte[]buf=new byte[1024];
            while (true){
                hasRead=is.read(buf);
                if(hasRead==-1){
                    break;
                }
                baos.write(buf,0,hasRead);
            }
            String msg=baos.toString();
            is.close();
            return msg;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

3.用Bitmap读图片读图片

 public static Bitmap getBitmapFromAssets(Context context,String filename){
        Bitmap bitmap=null;
        //获取文件夹管理者
        AssetManager am=context.getResources().getAssets();
        try {
            InputStream is=am.open(filename);
            bitmap= BitmapFactory.decodeStream(is);
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return bitmap;
    }

4.将数据放入数组

     //将Assets文件夹中的图片一起读取,放在内存当中,便于管理
public static void saveBitmapFromAssets(Context context, StarInfoBean starInfoBean){
    logoImgMap = new HashMap<>();
    contentImgMap=new HashMap<>();
    List<StarInfoBean.StarinfoBean> starlist=starInfoBean.getStarinfo();//注意,之前数据已经解析进starInforBean了
    for (int i = 0; i <starlist.size() ; i++) {
        //读取图片
        String logoname=starlist.get(i).getLogoname();
        String filename="xzlogo/"+logoname+".png";
        Bitmap logoBm=getBitmapFromAssets(context,filename);
        logoImgMap.put(logoname,logoBm);

        String contentName="xzcontentlogo/"+logoname+".png";
        Bitmap bitmap=getBitmapFromAssets(context,contentName);
        contentImgMap.put(logoname,bitmap);
    }
}

5.get方法得到数组

       public static Map<String,Bitmap>getLogoImgMap(){
    return logoImgMap;
}

public static Map<String,Bitmap>getContentImgMap(){
    return contentImgMap;
}

文章作者: 灿若星河
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 灿若星河 !
评论
 上一篇
轮播图(ViewPager)用法 轮播图(ViewPager)用法
一.XML布局下面的Liner是用来给小圆点的,其中先align再marin可以让这个布局自动就是再ViewPager的下方 <androidx.viewpager.widget.ViewPager android:id="@+
下一篇 
Android Stuidio中创建Fragment找不到xml文件的解决方案 Android Stuidio中创建Fragment找不到xml文件的解决方案
一.可能是你导入了android.R的包导致的,删去即可二.studio本身的bug,重启stuidio即可 document.querySelectorAll('.github-emoji') .fo
2020-07-25 灿若星河
  目录