0


我正在编写一个应用程序,它本质上是一个翻转卡,在一侧显示单词/提示,在另一侧显示与之相关的图片。我使用 viewflipper 来查看两个视图。问题是图片从互联网加载。应用程序访问数据库,提取url然后加载图片。这意味着视图的变化与下载图片所需的时间一样多。我想立即翻转卡片并加载图片,这样用户就不会认为应用程序很慢。他们应该知道图片正在加载,因此延迟。请建议改进​​代码。我在翻转卡中加载图片的代码是:

    public void setBMP(String s)  //String passed is url extracted from column of db uing  
    {                             //internal db
   try{
    //String url1 = "c.getString(3)";
    String url1= s;
    System.out.println(url1);
    URL ulrn = new URL(url1);
    HttpURLConnection con = (HttpURLConnection)ulrn.openConnection();
    InputStream is = con.getInputStream();
    Bitmap bmp = BitmapFactory.decodeStream(is);
    if (null != bmp)
    {  
    im.setImageBitmap(bmp);
    }
    else
        System.out.println("The Bitmap is NULL");

    }catch(Exception e){}
    }
        }

为了改变视图,我设置了 actionListener。只要用户触摸屏幕卡翻转和图像加载。
也可以在用户查看其他卡片时在后台预加载图像。或者是否可以缓存查看的卡片?

4

2 回答 2

1

在我看来,创建一个Runnable获取 bmp 并将其保存到哈希映射文件的文件,然后,如果下载需要它,它会打开文件,如果不需要,它会从网络下载它。

尝试查看fedorvlasov 的 Lazy 适配器以供参考。

你可以使用他的图像加载器

于 2012-04-29T08:55:33.300 回答
1

我会走 asnyctask 路线,因为这样你也可以加载/禁用微调器(或加载动画)。查看这个答案以获得一个非常简单的示例。如果要添加微调器,则需要在 asnyctask 的 onPreExecute() 中启动它们(只需将其添加到示例中)并在下载图像后在 onPostExecute 中禁用它们。

使用 AsyncTask 在 ListView 中加载图片

于 2012-04-29T08:59:18.303 回答