简体   繁体   English

如何在android中加载URL图像?

[英]How to load URL image in android wear?

Right now I am using Glide-library to load the image in Android Wear. 现在我使用Glide-library在Android Wear中加载图像。 It doesn't load the image in most of the times. 它大多数时间都不会加载图像。 However, it loads image sometimes. 但是,它有时会加载图像。 Don't know what going wrong in my code. 不知道我的代码出了什么问题。

Note Wear is connected to the device via Bluetooth and I successfully get JSON response of Webservice in Android Wear via Broadcast Receiver from mobile. 注意 Wear通过蓝牙连接到设备,我通过移动Broadcast Receiver成功获得Android Wear中Webservice的JSON响应。 All data are displayed properly in wear except the images. 除图像外,所有数据均在磨损状态下正确显示。

Glide.with(mContext)
   .load("http://www.hanamoflorist.ca/images/uploads/Spring5InchesCubeVaseArrangement$45.00.jpg")
      .listener(new RequestListener<String, GlideDrawable>() {

        @Override
        public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
            Log.e("exception in image", "" + e);
            Toast.makeText(mContext, "" + e, Toast.LENGTH_LONG).show();
            return false;
        }

        @Override
        public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
            return false;
        }
    }).error(R.drawable.ic_placeholder_image)
        .into(((ItemViewHolder) holder).ivCardImage);

I think you should use, DaVinci for image loading in Wearable, 我认为你应该使用DaVinci在Wearable中加载图像,

DaVinci.with(context).load("Your Url").into(imageView);

Make sure you use the same playservices version as the library, 确保使用与库相同的playservices版本,

You will be able to integrate the same by adding this to your gradle: 您可以通过将其添加到您的gradle来集成相同的内容:

wear : 穿:

compile ('com.github.florent37:davinci:1.0.3@aar'){
    transitive = true
}

Mobile: 移动:

compile ('com.github.florent37:davincidaemon:1.0.3@aar'){
     transitive = true
}

Hope you will get what you want. 希望你能得到你想要的东西。

The issue is due to socket time out... 问题是由于插座超时...

You can resolve it using Glide itself. 您可以使用Glide本身解决它。 You just need to use Glide with OKHttp3, and set Timeout Limit for OkHttpClient. 你只需要在OKHttp3中使用Glide,并为OkHttpClient设置Timeout Limit。

In your module dependency 在您的模块依赖项中

compile 'com.github.bumptech.glide:glide:3.7.0'
compile ('com.github.bumptech.glide:okhttp3-integration:1.4.0'){
    exclude group: 'glide-parent'
}

Customize glide settings 自定义滑行设置

public class MyGlideModule implements GlideModule {
   @Override
   public void applyOptions(Context context, GlideBuilder builder) {

   }

   @Override
   public void registerComponents(Context context, Glide glide) {

       OkHttpClient.Builder builder = new OkHttpClient.Builder();

       // set your timeout here
       builder.readTimeout(30, TimeUnit.SECONDS);
       builder.writeTimeout(30, TimeUnit.SECONDS);
       builder.connectTimeout(30, TimeUnit.SECONDS);
       OkHttpUrlLoader.Factory factory = new    OkHttpUrlLoader.Factory(client);
       glide.register(GlideUrl.class, InputStream.class, factory);
   }
}

In manifest put below code 在清单下面的代码

 <meta-data
        android:name="YourPath.MyGlideModule"
        android:value="GlideModule" />

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM