标签: android-glide

将图片保存在设备中[Glide Library]

我正在尝试将下载功能添加到我的应用程序中我正在使用Glide Library从他们的url下载图片这是我在设备存储中保存图片但不能正常工作的代码与android 5.0.16.0一起工作正常.1但是在另一个Android版本中效果不佳

Toast.makeText(Pop.this, "Please wait ...", Toast.LENGTH_LONG).show();
                    new AsyncTask<FutureTarget<Bitmap>, Void, Bitmap>() {
                        @Override protected Bitmap doInBackground(FutureTarget<Bitmap>... params) {
                            try {
                                return params[0].get();
                                // get needs to be called on background thread
                            } catch (Exception ex) {
                                return null;
                            }
                        }
                        @Override protected void onPostExecute(Bitmap bitmap) {
                            if(bitmap == null) return;
                            MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "Art_"+System.currentTimeMillis(), "Beschrijving");
                        }
                    }.execute(Glide.with(getApplicationContext()).load(url).asBitmap().diskCacheStrategy(DiskCacheStrategy.SOURCE).into(width, height));
Run Code Online (Sandbox Code Playgroud)

请帮我

android save android-glide

16
推荐指数
2
解决办法
2万
查看次数

滑行.缓存到外部存储(SD卡)

我使用Glide在我的Android应用程序中加载图像.
3.5更新后,开发人员提供了GlideModule接口.
根据这篇文章(Disk Cache)我可以设置缓存目录,使用setDiskCache方法和ExternalCacheDiskCacheFactory.
但我没有看到任何区别.所有缓存仍在默认缓存目录中的内部存储上.


build.gradle:

dependencies {
    ...
    compile 'com.github.bumptech.glide:glide:3.6.1'
}
Run Code Online (Sandbox Code Playgroud)

Android清单:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application ...>
<meta-data
        android:name="com.myapp.GlideConfig"
        android:value="GlideModule" />
</application>
Run Code Online (Sandbox Code Playgroud)

GlideConfig.java:

public class GlideConfig implements GlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        String state = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(state)) {
            Log.e("GlideConfig", "MEDIA_MOUNTED");
            builder.setDiskCache(
                context.getString(R.string.app_name),
                        419430400));//400Mb
            //Environment.getExternalStorageDirectory().getPath()
            // + "/"
            // + context.getString(R.string.app_name)
        }
        else {
            Log.e("GlideConfig", …
Run Code Online (Sandbox Code Playgroud)

android android-glide

15
推荐指数
1
解决办法
4057
查看次数

滑动:4.3.1覆盖和占位符功能不起作用

我将我的滑行更新为4.3.1但是我全部使用滑动功能.override().placeholder()获得error: cannot find symbol method.

Glide.with(this)
            .load(imageUrl)
            .override(200, 200)
            .placeholder(R.drawable.ic_avatar_sign_up)
            .into(ivAvatar);
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

android android-glide

15
推荐指数
1
解决办法
8007
查看次数

Glide FileNotFoundException:从Internet加载图像时没有内容提供者

我做了自己的休息api,现在它只有端点,我显示了一些图像.这是它在spring boot应用程序中的外观

@GetMapping("/image/{name:.+}")
    public byte[] getImage(@PathVariable(value = "name") String name) {
        return storageService.loadFileAsByteArray(name);
    }
Run Code Online (Sandbox Code Playgroud)

这是存储服务方法

 public byte[] loadFileAsByteArray(String filename) {
            Resource resource = loadFile(filename);
            try {
                return IOUtils.toByteArray(resource.getInputStream());
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
Run Code Online (Sandbox Code Playgroud)

在这里我在我的Android应用程序中做了什么

Glide.with(context!!.applicationContext).load("http://myipaddress/api/image/myimage.jpg").into(it)
Run Code Online (Sandbox Code Playgroud)

所以我从滑翔中得到了什么

根本原因(2/2)

java.io.FileNotFoundException: No content provider: http://myipaddress/api/image/myimage.jpg
                                                       at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1112)
                                                       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:964)
                                                       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:887)
                                                       at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:22)
                                                       at com.bumptech.glide.load.data.AssetFileDescriptorLocalUriFetcher.loadResource(AssetFileDescriptorLocalUriFetcher.java:13)
                                                       at com.bumptech.glide.load.data.LocalUriFetcher.loadData(LocalUriFetcher.java:44)
                                                       at com.bumptech.glide.load.engine.SourceGenerator.startNext(SourceGenerator.java:62)
                                                       at com.bumptech.glide.load.engine.DecodeJob.runGenerators(DecodeJob.java:299)
                                                       at com.bumptech.glide.load.engine.DecodeJob.onDataFetcherFailed(DecodeJob.java:394)
                                                       at com.bumptech.glide.load.engine.SourceGenerator.onLoadFailed(SourceGenerator.java:119)
                                                       at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:151)
                                                       at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:142)
                                                       at com.bumptech.glide.load.data.HttpUrlFetcher.loadData(HttpUrlFetcher.java:65)
                                                       at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.loadData(MultiModelLoader.java:97)
                                                       at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.startNextOrFail(MultiModelLoader.java:148)
                                                       at com.bumptech.glide.load.model.MultiModelLoader$MultiFetcher.onLoadFailed(MultiModelLoader.java:142)
                                                       at …
Run Code Online (Sandbox Code Playgroud)

rest android android-glide

15
推荐指数
2
解决办法
5684
查看次数

Glide断言:java.lang.IllegalArgumentException:您必须在主线程上调用此方法

有没有人用Glide从后台线程中获取图像?我一直得到这个断言:

java.lang.IllegalArgumentException: You must call this method on the main thread
Run Code Online (Sandbox Code Playgroud)

但根据这个线程,它应该工作:

https://github.com/bumptech/glide/issues/310

然而,我不能让它工作,除非我从主线程中调用它.

这是我试图从主线程做的事情:

    Glide.get(mContext);
    loadUserImage(userImageUrl);

    // wait 5 seconds before trying again
    int imageLoadingTimeOut = mContext.getResources().getInteger(R.integer.image_loading_time_out);
    if (imageLoadingTimeOut > 0) {
        new Timer().schedule(new TimerTask() {
            @Override
            public void run() {
                if (!mUserImageLoaded) {
                    loadUserImage(userImageUrl);
                }
            }
        }, imageLoadingTimeOut);
    }
}
Run Code Online (Sandbox Code Playgroud)

和loadUserImage:

private boolean mUserImageLoaded = false;

private void loadUserImage(String userImageUrl) {

    if (userImageUrl != null && !userImageUrl.isEmpty() && !mUserImageLoaded) {
        Glide.with(mContext).using(Cloudinary.getUrlLoader(mContext)).load(userImageUrl).crossFade().listener(new RequestListener<String, GlideDrawable>() {

            @Override
            public boolean onException(Exception …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-glide

14
推荐指数
3
解决办法
2万
查看次数

单元测试Glide:确保ImageView具有正确的图像

Android Studio 3.0 Beta 5
robolectric:3.3.1
Run Code Online (Sandbox Code Playgroud)

我有一个以下视图持有者使用滑动库加载图像URL.我试图找到一种单元测试的方法:

    public class MovieActorsViewHolder extends RecyclerView.ViewHolder {
        @BindView(R.id.civActorPicture) CircleImageView actorPicture;
        @BindView(R.id.tvName) TextView name;
        @BindView(R.id.tvCharacter) TextView character;

        private Context context;

        public MovieActorsViewHolder(View itemView) {
            super(itemView);
            ButterKnife.bind(this, itemView);

            context = itemView.getContext();
        }

        public void populateActor(Actor actor) {
            Glide.with(context)
                    .load(actor.getPicturePath())
                    .placeholder(R.drawable.people_placeholder)
                    .into(actorPicture);

            name.setText(actor.getName());
            character.setText(actor.getCharacter());
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是我所做的单元测试,但我不知道如何对图像视图进行单元测试.我不确定使用Mockito模拟Glide库会起作用吗?

@RunWith(RobolectricTestRunner.class)
public class MovieActorsViewHolderTest {
    private MovieActorsViewHolder movieActorsViewHolder;

    @Before
    public void setup() {
        final Context context = ShadowApplication.getInstance().getApplicationContext();
        final View view = LayoutInflater.from(context).inflate(R.layout.movie_actors_item, new LinearLayout(context));

        movieActorsViewHolder = new MovieActorsViewHolder(view);
    } …
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing robolectric android-glide

14
推荐指数
1
解决办法
3056
查看次数

滑行图像加载超时增加

我正在使用滑动来从URL加载图像.当我提取图像时,我在图像视图中显示了一个加载器.正在获取的某些图像较大,因此发生慢速Internet连接超时并引发异常

如何增加超时?

android timeout android-glide

13
推荐指数
5
解决办法
7810
查看次数

Android Glide:在加载实际图像之前显示模糊图像

我正在开发一个Android应用程序,向用户显示全屏图像.从服务器获取图像.我正在使用Glide来显示图像.但是我希望在显示实际图像之前显示非常小的模糊图像.缓存图像后,应显示直接全尺寸图像.

图像显示流程如下: - 如果是第一次下载图像,请首先下载小尺寸图像,然后下载全分辨率图像. - 如果之前已下载图像,则直接显示全尺寸图像.

我在Glide库中找不到任何方法,它告诉我缓存中是否存在文件.

任何想法,如何做到这一点.

android android-glide

13
推荐指数
4
解决办法
2万
查看次数

Glide无法解析asBitmap()

为什么我在使用时无法解决此方法Glide我也无法解决.diskstaretegy():

Glide.with(getActivity())
                .load(chalet.profilePhoto)
                .asBitmap() <--- cannot resolve this
                .diskCacheStrategy(DiskCacheStrategy.ALL) <--- cannot reslove this
                .fitCenter()
                .placeholder(R.drawable.logo).dontAnimate().into(mImageView);
Run Code Online (Sandbox Code Playgroud)

我的朋友: -

compile 'com.github.bumptech.glide:glide:4.0.0'
Run Code Online (Sandbox Code Playgroud)

android android-glide

13
推荐指数
7
解决办法
1万
查看次数

无法找到方法kapt()进行滑行

apply plugin: 'com.google.gms.google-services'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'

classpath 'com.android.tools.build:gradle:3.2.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.2.61"
Run Code Online (Sandbox Code Playgroud)

我有上面的gradle配置,但我仍然得到

Could not find method kapt() for arguments [com.github.bumptech.glide:compiler:4.3.1] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我哪里出错了?我在这里先向您的帮助表示感谢

android gradle android-glide kapt

13
推荐指数
2
解决办法
7095
查看次数