使用通用图像加载程序时出错

时间:2014-03-10 13:38:06

标签: android image loader universal

这是我第一次使用 Universal Image loader libary。

当我使用按钮触发Web图像的显示时发生错误。 相关代码如下:

public class MainActivity extends Activity {

ImageView iv;
Button btnButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    iv = (ImageView)findViewById(R.id.imageView1);
    btnButton = (Button)findViewById(R.id.button1);

    btnButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // dislpay a web image using a ImageView
            String url = "http://icons.iconarchive.com/icons/xenatt/minimalism/128/App-Json-Toolbox-icon.png";
             ImageLoader imageLoader = ImageLoader.getInstance();
            ImageLoaderConfiguration imgconfig = ImageLoaderConfiguration.createDefault(MainActivity.this);

            imageLoader.init(imgconfig);
            imageLoader.displayImage(url, iv);




        }
    });




}

然而,程序粉碎了。基于logcat,我在这句话中找到错误信息:

ImageLoaderConfiguration imgconfig = ImageLoaderConfiguration.createDefault(MainActivity.this);

如何解决此错误?

2 个答案:

答案 0 :(得分:1)

创建一个这样的应用程序:

import android.app.Application;

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;

public class CustomerApplication extends Application {

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();

        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                getApplicationContext())
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .discCacheFileNameGenerator(new Md5FileNameGenerator())
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();
        // Initialize ImageLoader with configuration.
        ImageLoader.getInstance().init(config);

    }

    @Override
    public void onLowMemory() {
        // TODO Auto-generated method stub
        super.onLowMemory();
        ImageLoader.getInstance().clearMemoryCache();
        ImageLoader.getInstance().clearDiscCache();
    }
}

不要忘记在清单文件中声明这一点。

    <application
    android:name="yourpackagename.application name"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name="Activity name"
        android:label="@string/app_name"
        android:screenOrientation="portrait"
        android:theme="@style/Theme.MyAwesomeTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

在onCreate上创建实例:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view_my_card);

    mImageLoader = ImageLoader.getInstance();

            mImageLoader.displayImage("Your Image URL", Your ImageView ,
        Options); // "Options if necessary";

    }

在我的案例中,选项是:

public static  DisplayImageOptions Options = new DisplayImageOptions.Builder()
            .cacheInMemory(true).showImageOnFail(R.drawable.ic_launcher)
            .showImageOnFail(R.drawable.ic_launcher)
            .showImageOnLoading(R.drawable.ic_launcher).cacheOnDisc(true)
            .bitmapConfig(Bitmap.Config.RGB_565).build();

多数民众赞成,你很高兴。

答案 1 :(得分:-1)

首先在Application的扩展类中初始化Image Loader?

在logcat中究竟出现了什么错误?