在Android中的ImageView中减少图像的加载时间

时间:2014-09-16 06:44:44

标签: android imageview

我有ImageView和一个按钮和2张图片。单击该按钮将导致切换ImageView中的图像。

以下是代码

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

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(this );

        flag = true; 
        imageView1 = (ImageView ) findViewById(R.id.imageView1);
        imageView1.setImageResource(R.drawable.off);

    } 

    @Override
    public void onClick(View  v) 
    {
        // TODO Auto-generated method stub

    //  imageView1.setImageResource(R.id.);
        //imageView1.setImageResource(R.drawable.off_widget);
          flag= !flag;
        if( flag == true  )
        {
            imageView1.setImageResource(R.drawable.off);
        }
        else
        {
            imageView1.setImageResource(R.drawable.on);
        }

但是加载时间很长。图像大小为188 KB和110 KB。我该怎么做才能减少加载时间?

2 个答案:

答案 0 :(得分:0)

这里的问题不是加载时间,即使200KB图像也不是那么大。您的GUI实际上会冻结由图像加载引起的短时间(加载图像所需的时间)。这会导致切换。

此处防止GUI冻结的最佳做法是将图像作为AsyncTask加载到Drawable中,然后将其分配给ImageView。您可以找到代码示例here。您只需从onCreate(...)onStart(...)调用该任务即可。将DrawableAsyncTask加到主要活动的另一个最佳做法是使用Observer Pattern,其中AsyncTaskObserver,您的主要活动是观察者。 Android已经为此提供了问题类。您还可以找到代码示例here

答案 1 :(得分:0)

你在哪里存放了关闭图像?您是否为每个屏幕密度创建了缩放版本?

当您将100kb图像添加到可绘制目录(而不是drawable-)时,图像将被视为mdpi图像,因此缩放到设备的密度。因此,drawable目录中的png在xxhdpi设备上占用的内存比100kb多得多。