从 SD 卡创建一个可绘制对象以设置为 Android 中的背景

2023-12-15

我正在尝试使用 SD 卡中的图像并将其设置为相对布局的背景。我尝试过在这里和其他地方找到的其他解决方案,但它们似乎对我不起作用。这是我的代码。我已经评论了我尝试过但不起作用的其他方法。唯一对我有用的是使用 setBackgroudnResource 并使用应用程序中的资源,但这只是为了测试以确保 mRoot 设置正确。当我尝试了所有其他方法时,它只是没有设置任何内容。有人知道我做错了什么,或者是否有更好的方法来做到这一点?

        //one way i tired...
//String extDir = Environment.getExternalStorageDirectory().toString();
//Drawable d = Drawable.createFromPath(extDir + "/pic.png");
//mRoot.setBackgroundDrawable(d);

//another way tried..
//Drawable d = Drawable.createFromPath("/sdcard/pic.png");
//mRoot.setBackgroundDrawable(d);

//last way i tried...
mRoot.setBackgroundDrawable(Drawable.createFromPath(new File(Environment.getExternalStorageDirectory(), "pic.png").getAbsolutePath()));

//worked, only to verify mRoot was setup correctly and it could be changed
//mRoot.setBackgroundResource(R.drawable.bkg);

您不从 SD 卡加载可绘制对象,而是加载位图。这是一种以减少的采样(质量)加载它的方法,这样如果图像太大,程序就不会抱怨。然后我想你需要处理这个位图,即裁剪它并调整背景大小。

         // Read bitmap from Uri
     public Bitmap readBitmap(Uri selectedImage) {
         Bitmap bm = null;
         BitmapFactory.Options options = new BitmapFactory.Options();
         options.inSampleSize = 2; //reduce quality 
         AssetFileDescriptor fileDescriptor =null;
         try {
             fileDescriptor = this.getContentResolver().openAssetFileDescriptor(selectedImage,"r");
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         }
         finally{
             try {
                 bm = BitmapFactory.decodeFileDescriptor(fileDescriptor.getFileDescriptor(), null, options);
                 fileDescriptor.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         return bm;
     }

这里的 Uri 可以从画廊选择器活动中提供。

然后可以将图像保存到应用程序资源中并加载到 imageView 中

        private void saveBackground(Bitmap Background) {
        String strBackgroundFilename = "background_custom.jpg";
        try {
            Background.compress(CompressFormat.JPEG, 80, openFileOutput(strBackgroundFilename, MODE_PRIVATE));
        } catch (Exception e) {
            Log.e(DEBUG_TAG, "Background compression and save failed.", e);
        }

        Uri imageUriToSaveCameraImageTo = Uri.fromFile(new File(BackgroundSettings.this.getFilesDir(), strBackgroundFilename));

        // Load this image
        Bitmap bitmapImage = BitmapFactory.decodeFile(imageUriToSaveCameraImageTo.getPath());
        Drawable bgrImage = new BitmapDrawable(bitmapImage);

        //show it in a view
        ImageView backgroundView = (ImageView) findViewById(R.id.BackgroundImageView);
        backgroundView.setImageURI(null); 
        backgroundView.setImageDrawable(bgrImage);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 SD 卡创建一个可绘制对象以设置为 Android 中的背景 的相关文章

  • 在 Actionscript-3 中优化 2D Flash 游戏的动态背景引擎

    编辑2 根据缺乏回复来判断 我开始怀疑我的问题是否足够清楚 请告诉我是否需要详细说明 注意 请参阅底部以获取代码更新 简短介绍 我正在用 ActionScript 编写一个二维 Flash 空间游戏 宇宙无限大 由于这个特性 背景必须动态渲
  • Android:图形布局不起作用 - 不显示任何内容

    我的情况是 我曾经制作过一个android项目 2 2版本 但很快需要格式化我的电脑 格式化后 我再次下载了 eclipse 但是当我导入项目时 我无法使用 xml 的 图形布局 菜单 它没有向我显示如下图所示的任何内容 http img5
  • Material Design 与 Android 5.0 以下版本的兼容性?

    Android 5 0以下版本可以使用Material Design主题吗 根据这个链接 https developer android com design material index html 情况并非如此 材料设计是视觉 动作和设计
  • 在Android中,哪种布局更快 1. LinearLayout内的FrameLayout还是2. 一大RelativeLayout?

    我正在考虑视图的两种不同布局安排 这将是 RecyclerView 中的一行 它们是不同的 但它们都可以工作 或者作为 一个容器垂直 LinearLayout 包含多行 FrameLayout 例如LinearLayout gt Frame
  • Jetpack Compose 中的图像裁剪器?

    我到处搜索 但没有找到有关在 Jetpack Compose 中裁剪图像的文档 如何在 Jetpack Compose 中裁剪图像 实际上 您可以使用那些较旧的 Android 库 没有问题 我用的是这个 https github com
  • android 无法解析方法 setcontentview

    今天在android studio 中遇到了一个错误 我正在尝试在应用程序中创建一个关于我们的屏幕 布局 xml 文件已创建 任何帮助表示赞赏 谢谢 错误 无法解析方法 setcontentview int package example
  • 如何避免 Android 游戏中的时钟漏洞?

    我需要测量一段可以持续几个小时的时间 我假设执行此操作的正常方法是这样的 Date date new Date wait some time new Date getTime date getTime 但是用户是否可以将 Android 的
  • 为什么mapbox-android sdk 无法从build.gradle 解析?

    我试图在这里设置基本教程 但我被 Android Studio 中的错误阻止 https docs mapbox com android maps overview install the maps sdk https docs mapbo
  • 向 Android 操作栏添加按钮

    我如何制作带有文本的按钮 在操作栏中带有图像 如下所示 是否可以使用内置的 android 按钮或图像按钮在操作栏中执行如下操作 我正在使用 appcompat 来使用操作栏 是的 如果需要 您可以膨胀自定义操作栏 Override pro
  • 如何判断手机是否有刘海

    如果存在缺口 我需要修改应用程序的工具栏 现在 该凹口隐藏了工具栏中的一些内容 if Build VERSION SDK INT Build VERSION CODES LOLLIPOP Build VERSION SDK INT Buil
  • 使用 IntentService 使用 Camera2 拍照

    我正在尝试创建一个可以拍照但不显示预览的应用程序 使用本教程 https www youtube com watch v oPu42I0HSi4 https www youtube com watch v oPu42I0HSi4如果我使用和
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • Retrofit RxAndroid 为 api 调用制作包装器

    我想在改造中为 api 调用创建一个包装器 这样我就可以在常见位置显示 ProgressDialog 并处理常见响应 我通过创建这样的包装器来实现这一点 public static
  • popBackStack导致反复调用fragment的oncreateView

    我有 3 个片段 A B C 我编写了一段代码来替换它们并维护 backstack public void addFragment Fragment fragmentToAdd String fragmentTag FragmentMana
  • Android BottomNavigationView 与自定义视图作为图标[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试 Android 支持库中的新 BottomNavigationView 对于其中一个菜单项 我希望有一个自定义视图 以便我
  • 找不到 `activityViewModels()` Hilt Android

    我在我的项目中使用 Hilt 和 MVVM 我想要一个viewModel from activityViewModel在 2 个活动中使用相同的内容 但我的 Android Studio 说未解析的参考 我的应用程序 build gradl
  • Android Studio MediaStore,低于 SDK 29 将图像保存在 SD 卡中失败

    我需要将图像保存在Android 10以下的sd card的图片目录中 我已经实现了范围存储 此代码适用于sdk 29及以上版本 因为MediaStore getExternalVolumeNames是在sdk 29中添加的 sdk 29以
  • Android 通知上有按钮

    我正在尝试使用 2 个按钮发出通知 一个带我回到活动 另一个将其关闭 有谁知道如何捕获按钮单击事件 请记住活动已暂停 我很高兴发布它 经过一夜的工作 我发现了一些东西 那么 我们开始吧 1 为您的通知创建 xml 布局文件 2 使用Noti
  • 如何在android中使用Room Persistence ORM工具实现created_at和updated_at列

    我该如何实施created at and updated at在Android中使用Room Persistence ORM工具的列 可以在创建或更新表中的行时自动更新时间戳 我研究了很多网站 但仍然没有找到任何可以处理的结果middlew
  • StableArrayAdapter 与 ArrayAdapter

    我正在看这个ListView教程 列表视图教程 http www vogella com tutorials AndroidListView article html 我想知道创建自己的更好ArrayAdapter 而不仅仅是使用和Arra

随机推荐

  • mysql_real_escape_string 与 Zend

    我正在使用 zend 框架开发一个 Web 应用程序 对于选择语句我使用了以下方式 Ex public function getData name sql SELECT from customer where Customer Name n
  • Microsoft AZURE blob 触发功能间歇性工作

    我们的 Blob 触发函数遇到了问题 该函数是用 JavaScript 编写的 我们很难为其制定自动化部署流程 以下是我们遵循的步骤 使用 ARM 模板和参数文件在现有资源组中创建函数应用New AzureRmResourceGroupDe
  • URL SQL 中的子字符串域名

    我有一组数据 www google com sg www yahoo com marketwatch bing com bbc co uk 一些数据有www 有些则不然 有些有 com com sg com ul 有些则不然 如何仅提取名称
  • 如何使用node js创建pdf/a-1b文件?

    我想创建 pdf a 1b 文件 我已经用谷歌搜索但无法用nodejs找到它 有人知道我们如何创建 pdf a 1b 文件吗 None
  • 从非标准事件创建 Observable(无 EventArgs / EventHandler)

    我想为定义如下的事件创建一个 Observable public event Func
  • Android USB 权限对话框永远不会出现

    我编写了一个简单的应用程序 用于将命令发送到通过 USB 连接到 Android 4 0 平板电脑的 USB 打印机 由于某种原因 我无法获得权限来声明接口并打开连接 这是相关代码 public class TestPrintActivit
  • 可翻译学说实体的 Symfony 形式

    我有一个已使用翻译的教义实体可翻译学说的扩展
  • 光标下有下划线

    我已经实现了自定义编辑文本 具有自定义样式
  • C++异步编程,如何不等待未来?

    我正在尝试学习 C 异步编程 在Python中 我们有await 我们可以用它从该点恢复函数 但在 C 中future等待结果并停止下一行代码 如果我们不想得到结果 而是继续执行下一行代码怎么办 我怎样才能做到这一点 您可以使用std fu
  • 在 R 中的 knit 文档中插入 HTML 表格

    我有许多不同的 HTML 文件 其中包含格式化的表格 我想将这些表格合并到 R 中的 knit 报告中 不幸的是 我在将 HTML 文件加载到 R 中并将表格包含在我的knitr 报告中时遇到了一些问题 HTML 文件是使用 MS Exce
  • 对于有效证书,X509Certificate2.Verify() 方法始终返回 false

    我正在使用智能卡进行身份验证 SecurityTokenService 身份验证服务 仅托管在我的计算机上 智能卡具有有效的证书 并且其根证书也安装在我的计算机上的本地计算机存储中 当我使用X509Certificate2 Verify在我
  • 如何在c代码中使用tcl api

    我想在另一个 c 代码文件中使用我的 tcl 代码的一些功能 API 但我不知道如何做到这一点 特别是如何链接它们 为此 我采用了一个非常简单的 tcl 代码 其中包含一个 API 该 API 将两个数字相加并打印总和 谁能告诉我如何调用这
  • 如何使用按键绑定而不是按键侦听器

    我在用着KeyListener在我的代码 游戏或其他 中作为我的屏幕对象对用户按键输入做出反应的方式 这是我的代码 public class MyGame extends JFrame static int up KeyEvent VK U
  • 在 Git 中,如何将错误修复的提交应用到其他较新的分支?

    如果我有一个公共 Git 存储库 其中包含 3 个分支 如下所示 release to customerA U master A B C D E S T release to customerB 其中提交 B 是原始发行版本 提交 U 解决
  • Pandas DataFrame 获取索引匹配特定条件的行

    我有一个 Pandas 数据框 我需要其中索引匹配特定条件的所有行 数据框有一个多重索引 我需要第一个索引所在的行TimeStamp 在特定范围内 MultiIndex 的第 1 级是一系列 DateTime 对象 以下代码行用于检查月份是
  • Javascript 中的函数重载 - 最佳实践 [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 在 Javascript 中伪造函数重载的最佳方法是什么 我知道不可能像其他语言那样重载 Javascript 中的函数 如果我需要一个有两种用途的函数foo x and foo x y
  • 选择并列出子项和父项

    我需要一个 SQL 查询来执行以下复杂任务 我需要从名为的列中进行选择parent id 如果一行有 0parent id这意味着它是一个类别 它也有type栏说cat对于类别 如果一行有 1 个或多个parent id这意味着这是一条规则
  • 带复选框和 JFileChooser 的 Swing JTree

    通过使用JFileChooser我可以选择使用文件对象获取 JList 的文件和文件夹 并使用复选框显示它 现在我的要求是我想用复选框在树结构中显示选定的文件和文件夹 并且该复选框应该仅适用于根元素而不适用于所有子元素 示例 例如 我选择了
  • 运行任意Python代码的Bokeh悬停工具

    我正在使用 Bokeh 尝试创建一个图形 当用户将其数据点 悬停 在其上时 将在悬停工具中显示另一个图形 显示有关该数据点的附加信息 即 在主图中 数据点是设定间隔内的时间序列 我希望悬停工具显示该间隔内的所有数据 The 用户指南 完整代
  • 从 SD 卡创建一个可绘制对象以设置为 Android 中的背景

    我正在尝试使用 SD 卡中的图像并将其设置为相对布局的背景 我尝试过在这里和其他地方找到的其他解决方案 但它们似乎对我不起作用 这是我的代码 我已经评论了我尝试过但不起作用的其他方法 唯一对我有用的是使用 setBackgroudnReso