【问题标题】:Best way to have lots of pictures in an App? Android Studio在应用程序中拥有大量图片的最佳方式?安卓工作室
【发布时间】:2016-07-12 18:42:23
【问题描述】:

所以我正在制作一个包含 200 多张日落照片的应用程序(我自己拍摄:P)。我想通过android.R.layout.simple_gallery_item 将它们全部显示出来 我尝试将它们全部扔到可绘制文件夹中,然后对每个进行位图绘制并将其绘制在屏幕上,但出现内存不足错误。

存储这些 jpg 的最佳方式是什么?

我能想到的只有两种方法:

  • 从应用程序下载单独的 zip 文件?
  • 可绘制文件? (使用位图不是正确的方法吗?)
  • 以某种方式将它们存储在 apk 中,然后在安装应用程序之前将它们推送到设备上?(如果可能,因为如果我是正确的(我可能不正确),在构建 apk 时,所有内容都汇集在一起​​,一些文件变成了一)

(PS:如果看不出来,我是Android开发新手)

谢谢!

代码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    System.out.println("Noobs");

    ArrayList<Image> img = new ArrayList<Image>();
    for (int i=1; i<3; i++) {
        int imageResource = getResources().getIdentifier("@drawable/bm" + String.valueOf(i), null, getPackageName());
        img.add(ImageView.setImageResource(imageResource));
        System.out.println("Did Pic "+String.valueOf(i));
    }


    System.out.println("Come so far!");
    ListAdapter picAdapt = new ArrayAdapter<Image>(this, android.R.layout.simple_gallery_item, img);
    ListView picListView = (ListView) findViewById(R.id.gallery);
    picListView.setAdapter(picAdapt);

} }

【问题讨论】:

  • 将图像存储在服务器中并使用图像加载器库加载。 (或) 将所有图片从 jpeg 转换为 webp,这样图片的大小可以减小
  • 使用服务器会不会让我支付月费?你会推荐哪一个?
  • 取决于图像的大小。如果图像大小以 kb 为单位,则首选应用程序中的捆绑包。如果大小更大,请将其存储在服务器中(使用 parse.com,但您可以在 1 月 17 日之前使用,如果您已经有帐户)或一些可以帮助您的云服务器
  • 如果你已经有了drawable,那么为什么需要位图呢?你说卡住@第一张图片,但是没有这样的代码,你贴了
  • 如果你有 id,那你为什么要绘制并存储到数组中......而不是使用 setImageResource 并将 id 传递给方法

标签: android image android-studio large-data-volumes


【解决方案1】:
    ArrayList<Integer> img = new ArrayList<Integer>();
    for (int i=1; i<3; i++) {
        int imageResource = getResources().getIdentifier(mContext.getPackageName() + ":drawable/bm" + String.valueOf(i), null, null);
        img.add(imageResource);

    }

    ImageView imageView = findViewById(R.id.<UR_ID>);        
    imageView.setImageResource(img.get(0));

【讨论】:

  • setImageResource 无法从静态上下文中查看错误,我该如何解决?
  • 你能发布你的代码吗?可能是你使用了 imageView 类而不是 ImageView 的实例。
  • 代码发布在原始帖子上。
  • 如果图像未存储在列表中,我将如何使用 simple_gallery_item 显示它们?
【解决方案2】:

我推荐你用毕加索http://square.github.io/picasso/ 或滑行https://github.com/bumptech/glide
这两个可以帮助您获取和优化图像

【讨论】:

  • 这两家公司会向我收取使用他们服务器的费用吗?
  • 谢谢!为你投票!如果 Harsha Vardhan 的答案不起作用,我会选择您的答案,我宁愿将其全部保留在应用程序中。
  • 我进一步查看了毕加索,似乎它需要一个 URL 并下载图像,我将在哪里托管我的图片可以免费提供?
  • 你可以使用photobucket.com/desktop,但你也可以使用谷歌驱动器或保管箱并生成分享链接
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
  • 2018-07-08
  • 1970-01-01
相关资源
最近更新 更多