【问题标题】:ImageButton - Get Image from Gallery - Setting it to imagebutton - (How to get image inside button to "stick"?)ImageButton - 从图库中获取图像 - 将其设置为 imagebutton - (如何让按钮内的图像“粘贴”?)
【发布时间】:2013-03-03 05:00:45
【问题描述】:

我遇到了一个简单的问题,已经四处搜索,但到目前为止还没有运气。 (音板类型的应用程序 - 到目前为止只有一个按钮)

目前,我单击主屏幕上的“音板”按钮,它会导致我的一键试用音板 - 我在页面顶部有一个“添加图像”按钮。按钮下方是一个空白图像按钮(待填充)。单击“添加图像”后,我将被带到我选择图像的画廊。选择后,图像被设置为imagebutton中的背景(源变成背景)。经过多次试验和错误,我终于解决了缩放问题(如果选择的图像很大,它会在按钮内爆炸)。

现在我的问题是让选定的图像“粘”在按钮上。如果我单击后退按钮返回底部栏上的主页或单击操作栏上的后退按钮(从音板页面)---然后返回音板之后---先前选择的图像被设置为 imagebutton 不再存在(似乎图像按钮被重置或重新初始化)。 如果我转到其他页面或退出,是否有办法让所选图像粘贴而不擦除/清除?不确定如何处理

包括一个用于将所选图像从图库设置到图像按钮并执行某种缩放的代码的 sn-p。我无法发布图片...但我希望您能想象...非常简单。

谢谢!

PS:最终的目标是使用 soundpool 和 raw 文件夹中的一个小音频剪辑,并将其链接到上面的图像按钮 - 音频输出。

        ImageButton imagebutton = (ImageButton) findViewById(R.id.imBut);

        Bitmap bitmaporg = BitmapFactory.decodeFile(picturePath);
        bitmaporg = Bitmap.createScaledBitmap(bitmaporg,350,350,true);

        imagebutton.setImageBitmap(bitmaporg);

【问题讨论】:

  • 您希望每次打开应用时都显示图片,还是只在应用打开时显示一次?
  • 我想拥有它,所以每次打开应用程序时它都会出现。另外,如果我想更改图像,我可以再次单击“添加图像”按钮,它将覆盖或替换旧图像。有点像根据用户“动态”设置图像......谢谢!
  • 将路径保存到文本文件,然后每次打开该活动时加载路径,然后检查路径是否为空,将图像加载到图像按钮
  • 感谢您的回复。是否可以提供一两行示例代码?这真的很有帮助。抱歉,我是新开发者,因此非常感谢任何帮助/示例!
  • 好的,给我一点

标签: android imagebutton


【解决方案1】:

您可能希望将调整大小的按钮图像保存在本地,以便以后使用。即使在关闭并重新启动之后。

这里发生的是一个新的活动实例(带有按钮)正在初始化,它没有关于应用到其他按钮实例的图像的信息。

您想要的是在初始化活动(活动的构造函数)时检查是否保存了图像(您只会保存),如果存在则应用图像。看到这个SO 问题,它有很好的小漂亮答案。 (您已经知道如何从给定路径获取数据)。

否则,如果您希望图像仅在运行之间保留,您可能希望将图像源保存为某个全局变量,然后您可以通过意图将图像源传递给新活动,或者直接在新活动中使用它已经是全局变量了。

对于全局变量,您可能需要查看这些 SO 问题:

Android global variableAndroid: How to declare global variables?

【讨论】:

    【解决方案2】:

    在你得到镜像路径后试试这个,用你的实际包名替换包名:

     try {
                    BufferedWriter writer = new BufferedWriter(new FileWriter("/data/data/packagename/" + "filename.txt"));
    
                    writer.write(picturePath);
    
                    writer.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    

    然后在您的 onCreate 活动中使用 imageview 试试这个:

    ImageButton imagebutton = (ImageButton) findViewById(R.id.imBut);
    try {
                BufferedReader inputReader = new BufferedReader(new FileReader("/data/data/packagename/"+ "filename.txt"));
                String inputString;
    while ((inputString = inputReader.readLine()) != null) {
    Bitmap bitmaporg = BitmapFactory.decodeFile(inputString);
        bitmaporg = Bitmap.createScaledBitmap(bitmaporg,350,350,true);
    
        imagebutton.setImageBitmap(bitmaporg);
    }
            } catch (IOException e) {
                e.printStackTrace();
            }
    

    【讨论】:

    • 我的错误是我的图片路径仍在 while 循环中 decodefile() 我编辑并放入 inputString
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多