码迷,mamicode.com
首页 > 其他好文 > 详细

在继承activity类之外的类中使用getResource()时候出现的问题解决

时间:2014-09-26 03:29:08      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:des   android   style   blog   color   io   os   使用   java   

有几次写代码的时候都碰到了这个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();
~~~~~
}

 

在继承activity类之外的类中使用getResource()时候出现的问题解决

标签:des   android   style   blog   color   io   os   使用   java   

原文地址:http://www.cnblogs.com/tiejiangweigaibianercunzai/p/3994021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!