1

現在、次のコードを使用して画像を取得していますが、完全に機能しています。しかし、キャッシュを実装したいのですuniversal-image-loaderが、〜\ images\pic1のような画像の完全なURLを持っていた他のプロジェクトですでに実装しています。一方、jpegは、Contacts api v3を使用しているときに、入力ストリームを処理する必要があり、そのような完全なURLがないため、実装方法がわかりませんuniversal-image-loader

参考のために:apiv3に連絡してください

これが私が今使っているコードです:

    Bitmap bm=BitmapFactory.decodeResource(HomeActivity.this.getResources(),
            R.drawable.profile_pic);
    CONSTANTS.buffer = new byte[4096];

// iterate the loop upto number of contacts
    for(int i=0;i<CONSTANTS.contactArrayList.size();i++)
    {


//if the contact has any profile pic then retrieve it otherwise set default profile pic from drawable folder

    if(CONSTANTS.contactArrayList.get(i).getContactPhotoLink().getEtag()!=null)
        {
            try
            {
                GDataRequest request = CONSTANTS.mContactService.createLinkQueryRequest(CONSTANTS.contactArrayList.get(i).getContactPhotoLink());
                  request.execute();
                  InputStream in = request.getResponseStream();
                  CONSTANTS.buffer = ByteStreams.toByteArray(in);
                  bm = BitmapFactory.decodeByteArray(CONSTANTS.buffer, 0, CONSTANTS.buffer.length);
                  in.close();
                  request.end();
            }
            catch (Exception e) {
                UTILS.Log_e("loadProfilePics error", e.toString());
            }

        }
        else
        {
            bm = BitmapFactory.decodeResource(HomeActivity.this.getResources(),
                    R.drawable.profile_pic);
        }
         CONSTANTS.contactArrayList.get(i).setContactPhoto(bm);
     }
4

1 に答える 1

1

はい、universal-image-loaderできます。次の手順に従ってください。

  1. たとえば、独自のURLタイプを導入できますcontacts-api-v3://user_id=<user_id>
  2. InputStreamそのようなURLを取得する方法を提供します。

    public class CustomImageDownloader extends URLConnectionImageDownloader {
        @Override
        protected InputStream getStreamFromOtherSource(URI imageUri) throws IOException {
            if (imageUri.getScheme().equals("contacts-api-v3")) {
                // here you can use code provided in your question
                return retriveInputStreamForThisUser();
            }
            return null;
        }
    }
    
  3. ImageLoaderを使用するように構成しCustomImageDownloaderます。

    final ImageLoaderConfiguration.Builder builder = new ImageLoaderConfiguration.Builder(context);
    
    // some basic configuration should be here
    
    builder.imageDownloader(new CustomImageDownloader());
    
  4. これで、次のように使用できます。

    ImageLoader.getInstance().displayImage("contacts-api-v3://user_id=123", imageView);
    
于 2013-01-06T10:12:29.233 に答える