標籤: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()時候出現的問題解決