0

Android-Universal-Image-Loader でグリッドビューを作成しました

画像を選択すると、画像ビューに表示されます。

最初に選択すると、正常に動作します。しかし、2つ目はクラッシュしています。(メモリ不足)

1M サイズを超える画像を読み込みます (元はデフォルトのカメラで撮影されたもの)。

ここに初期化するコードがあります

    ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(context)
        .memoryCacheExtraOptions(480, 800) // default = device screen dimensions
        .discCacheExtraOptions(480, 800, CompressFormat.JPEG, 75)
        .taskExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
        .taskExecutorForCachedImages(AsyncTask.THREAD_POOL_EXECUTOR)
        .threadPoolSize(3) // default
        .denyCacheImageMultipleSizesInMemory()
        .memoryCacheSize(2 * 1024 * 1024)
        .discCacheSize(50 * 1024 * 1024)
        .discCacheFileCount(100)
        .enableLogging()
        .build();

そして、これが選択されたときにURIを取得します

    listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            // when clicked image
            //startImagePagerActivity(position);
            //URI imageUri = URI.parse("android.resource://com.kmob.camera/" + parent.getItemIdAtPosition(position));
            SignUp.profilePath =  Uri.parse(imageUrls[position].substring(7)); // return selected uri except prefix, "file://"
            Log.v("OWL", "selected file: " + imageUrls[position].substring(7));
            finish();

        }
    });

ここに活動の結果があります

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    //mProfile.notifyAll();
    if(profilePath.getPath().toString().length()>0){
        mProfile.setImageURI(profilePath);
    }
}   

前もって感謝します、

4

1 に答える 1

0

著者の提案によると、displayoptions で次の 2 行に言及してください。

.imageScaleType(ImageScaleType.IN_SAMPLE_INT)
.bitmapConfig(Config.RGB_565) in displayioptions.

そして構成で

.memorycache(new WeakMemoryCache())
于 2013-05-30T09:36:52.360 に答える