java - 如何允许用户将图像上传到我的应用程序并使用它们?

标签 java android android-studio

我正在构建一个应用程序,允许用户上传自己的图标以在应用程序中使用(这些图标将是小的 .png 或 .gif 文件)。我想包含一组默认图标,然后允许用户添加自己的图标。

我正在尝试找出最好的方法来做到这一点 - 网上似乎有各种解决方案,但我不确定哪个最适合我的目的。正如我所说,我想为应用程序提供一组默认图标,以存储在用户的设备上。然后,用户应该能够添加更多图标,这些图标也应该存储在设备上(稍后用户可以选择将图标上传到中央服务器,以便其他人也可以使用它们)。

目前,我尝试将默认的 .png 文件手动添加到 Android Studio 的“drawable”文件夹中,然后将资源 ID 存储在数据库中。不过,资源 ID 似乎一直在变化,因此大多数时候都会加载错误的图标。因此,我认为我需要将 .png 文件的名称/路径存储在数据库中。那是正确的吗?如果是这样,是否有一个通向“drawable”文件夹的标准文件路径?

那么用户上传图标呢?我应该将它们保存到特定目录,然后将路径存储在数据库中吗?或者有更好的方法来处理这个问题吗?

我应该考虑哪些类型的事情?图标的最大尺寸应为 64x64 或左右(我还没有完全决定,但它们不会比这大得多 - 我们不是在谈论 1000x1000 或其他任何东西)。理论上用户可以添加任意数量的图标,但实际上我想大多数人会使用默认设置,少数人会添加多达 20-30 个自己的图标。

最佳答案

在此处了解 Android 中的内部和外部存储:https://developer.android.com/guide/topics/data/data-storage.html

唯一的区别是,如果用户说将手机插入计算机并尝试查看文件,则用户无法访问内部存储中的图像/数据。在外部存储中,所有项目都是公共(public)的。

有关如何让用户在您的应用程序中保存图像的一些示例代码,请查看此帖子:Saving and Reading Bitmaps/Images from Internal memory in Android

然后,您可以将图标的文件名存储在共享首选项中(如果您预计不会有很多图标并且您的模型很简单)或 SQLite(如果您的模型更复杂)。既然您听起来像个初学者,我建议您从共享偏好开始?

至于您与应用程序一起存储的默认图标,是的,您可以将它们放入可绘制文件夹中(如果您正在这样做,则不同的屏幕具有不同的尺寸),但是由于您已经知道这些可绘制资源的名称,因此可以当您需要时,您不是只用 Java 显示您想要的任何内容吗?我不确定将它们存储在数据库中的原因是什么,但我又不知道你正在构建什么。

希望这有帮助。

关于java - 如何允许用户将图像上传到我的应用程序并使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598165/

相关文章:

android - android studio 3.4中的R.java文件

android - list 合并失败 : Attribute application@appComponentFactory. ..Android Studio 3.2

java - 使用哪些 Swing 组件

java - 自定义 ImageView 不显示图像

java - 使用合并排序从文本文件中读取的 100000 个整数的反转计数。但无法获得正确的反转计数

android - 手机关机后共享首选项数据持久化

java - 如何使用 setContentView(new Activity(this)); 以编程方式创建 admob 横幅不使用xml?

java - 为什么我无法将计算机部件添加到我的通用订单中?

android - 无法解析 Dagger 的导入语句

android - SQLite的FTS3如何实现模糊搜索?