Android app 中图片需要存放在什么地方?

Where do images need to be stored in and Android app?

我已经阅读了很多有关该主题的文章,但仍然不是很清楚。目前我正在创建一个应用程序,在一个屏幕上加载图像和文本。为了加载图像,我选择了 Glide,但是从哪里读取图像最合适?我通过的所有教程都通过图像的URL。从网上加载不是更慢吗?非常感谢!

如果您喜欢 apk size,请不要放置这些图像 static。相反,您可以将这些图像保存在 server(您的或免费的服务器)上,并使用 GlidePicasso.

等库轻松加载这些图像

Isn't it slower when loaded from the net?

没有。它将下载图像一次,然后将其缓存以备将来使用。所以速度非常快。

如果您认为 apk size 对您来说无关紧要,并且用户不应该因为互联网不可用而面临问题,那么您可以在应用程序本身中保持这些图像静态。

如果你想构建一个使用动态图像的应用程序,或者你想更新你的图像而不更新你的应用程序,从服务器获取它们更好。在我看来,毕加索易于使用且直接。还使用它自己的框架缓存。但如果您认为您的图像不会改变,请将它们放在资产文件夹中,以便它们位于应用程序的内部存储器中。从服务器获取它们有缺点,比如您需要使用占位符图像,因为它们不会立即被检索。

如果您希望图像始终来自网络,则必须使用缓存机制。我遵循的系统是这样的:(PS。我用的是Picasso,又快又靠谱):

Picasso.with(this).load(URL).networkPolicy(NetworkPolicy.OFFLINE).  //load from cache first time
                into(imageView, new Callback() { //Picasso Callback 
                    @Override
                    public void onSuccess() {
                        if(isNetworkAvailable()) { // if network available then update the cache for this URL
                            Picasso.with(MyActivity.this).invalidate(URL);
                        }
                        progress.setVisibility(View.GONE); // Progressbar
                    }

                    @Override
                    public void onError() { // Image not loaded, try again one last time
                        Picasso.with(MyActivity.this).load(URL).into(imageView, new Callback() {
                            @Override
                            public void onSuccess() {
                                progress.setVisibility(View.GONE);
                            }

                            @Override
                            public void onError() {
                                progress.setVisibility(View.GONE);
                            }
                        });
                    }
                });