zoukankan      html  css  js  c++  java
  • 在继承activity类之外的类中使用getResource()时候出现的问题解决

    有几次写代码的时候都碰到了这个getResource()的使用,当时把它写在了一个普通类当中,用来加载assets当中的图片,但是代码报错。后来发现是由于这个方法是需要context的,但是最初急忙着写而没有仔细的理解,结果折腾半天也不知道怎么修改传递这个context过来,最后为了逃避这个问题,就把它放到了继承activity的类里面去了。

    现在又遇到了这个问题,这下必须解决他了。

    其实只要在方法调用连传context参数 或者在构造函数里面搞定 就行了:

    大致代码如下:

    /**
     * 从assets是中加载图像资源
     * 后期优化代码中的gridview 使用baseadapter的时候使用这种方式加载图片资源
     * */
    package com.example.changeyouvioce.util;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    import com.example.changeyourvioce.VoiceChangeActivity;
    
    import android.content.Context;
    import android.content.res.AssetManager;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.util.Log;
    
    public class GridViewResource {
        private Context context;
        private final static int MAX_RESOURCE_LENGTH = 18;
        public Bitmap[] mBitmapArray = null;
        
        public GridViewResource(Context context){
            this.context = context;
        }
        //将图像资源装载到bitmap数组
        public Bitmap[] fillBitmapArray(){
            String Name = "gridtn"; 
            mBitmapArray = new Bitmap[MAX_RESOURCE_LENGTH];
            for (int i = 0; i < MAX_RESOURCE_LENGTH; i++) {
                int nameNum = i;
                String fileName = Name + String.valueOf(nameNum);
                Log.e("fileName", fileName);
                mBitmapArray[i] = loadFromAsset(context, fileName);
            }
            return mBitmapArray;
        }
        //从assets加载图像资源
        private Bitmap loadFromAsset(Context context,String fileName){
            Bitmap mBitmap = null;
            Log.e("loadFromAsset", "execute");
    
            AssetManager am = context.getResources().getAssets();
            Log.e("loadFromAsset", "execute ??");
    
            try {
                InputStream is = am.open(fileName);
                mBitmap = BitmapFactory.decodeStream(is);
                is.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return mBitmap;
        }
        
    }

    在activity当中调用的代码:

    protected void onCreate(Bundle savedInstanceState) {
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        ~~~~~~~~~~~~~~~~~
    
            mGridViewResource = new GridViewResource(this);
            mBitmap = mGridViewResource.fillBitmapArray();
    ~~~~~
    }
  • 相关阅读:
    StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(二)小车端
    StarRTC , AndroidThings , 树莓派小车,公网环境,视频遥控(一)准备工作
    公司名称后缀 Inc. Co.,Ltd.
    Linux C定时器使用指南
    配置QQ企业邮箱小结
    常用PHP文件操作函数
    Git基本命令 -- 基本工作流程 + 文件相关操作
    Git基本命令 -- 创建Git项目
    Entity Framework Core 2.0 入门
    用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传
  • 原文地址:https://www.cnblogs.com/tiejiangweigaibianercunzai/p/3994021.html
Copyright © 2011-2022 走看看