Android如何获取当前ImageView中的src资源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android如何获取当前ImageView中的src资源相关的知识,希望对你有一定的参考价值。

布局文件
<ImageView
android:id="@+id/imageView"
android:src="@drawable/image" />

如何在java代码中获取R.id.imageView所对应的图片?

private ImageView imageView,imageView2;
@Override
protected void onCreate(Bundle savedInstanceState) 
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView=(ImageView)super.findViewById(R.id.imageView);
imageView2=(ImageView)super.findViewById(R.id.imageView2);//找到你layout中对应的imageView
Drawable drawable=imageView.getBackground();//获取它的资源,返回类型是Drawable
//假设你想把imageView的图片设置到其他容器中,比如imageView2,
imageView2.setBackground(drawable);//imageView2就显示和imageView一样的图片了

参考技术A 在调用getDrawingCache的时候要注意下面2点:
在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:
imageview.setDrawingCacheEnabled(true);
否则,无法从ImageView对象iv_photo中获取图像;
在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:
imageview.setDrawingCacheEnabled(false);
以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。

如何在android中使用id获取视图(ImageView)

【中文标题】如何在android中使用id获取视图(ImageView)【英文标题】:How to get view (ImageView ) using id in android 【发布时间】:2013-12-06 06:39:20 【问题描述】:

更新

我知道我可以使用数组或列表,但我想使用一种有效的方法而不使用数组或集合,感谢大家 特别感谢 mussharapp

嗨,我想使用 Imageview 的 id 访问它 例如,我有一个使用循环创建的图像视图,例如

for(int i=1;i<10;i++)  
      Imageview mv=new ImageView(this);
        mv.setid(i); 
       // and so on for image properties 
             

现在我想获取我在循环中创建的所有图像如何获取这些图像有什么方法可以使用 id 或其他东西???

我面临同样的问题

【问题讨论】:

您是否将这些图像视图添加到任何布局或其他东西中??? List&lt;ImageView&gt;怎么样? 我正在使用'ImageView imageView = (ImageView) inflate.inflate(R.layout.ani_image_view, null);'创建图像视图 每次imageview drawlabe在一段时间后改变现在我想访问旧图像如何获取 @NoamanAkram 请更新您的问题并清楚详细地描述您在做什么以及您想要什么.. 【参考方案1】:

声明一个private数组列表:

private ArrayList<Imageview> images = new ArrayList<Imageview>();

然后将所有视图存储到该列表中:

for(int i=1;i<10;i++)  
    Imageview mv=new ImageView(this);
    mv.setid(i); 
    // and so on for image properties
    images.add(mv); 

最后,你可以根据位置/id(因为position == id)获取它们:

ImageView imageView = images.get(position);

完成后记得清除列表或onDestroy()

images.clear();

【讨论】:

【参考方案2】:

鉴于您确定图像视图 ID 是唯一的,您可以执行类似的操作

//Your code
for(int i=1;i<10;i++)  
      Imageview mv=new ImageView(this);
        mv.setid(i); 
       // and so on for image properties 
             

//...
List<Drawable> drawables = new ArrayList<Drawable>();
for (int i = 1; i < 10; i++) 
    ImageView mv = (ImageView) findViewById(i);
    drawables.add(mv.getDrawable());

不确定您尝试做的事情是否有效。他们提到的其他建议可能会更好。

【讨论】:

【参考方案3】:

首先您必须设置图像数组及其路径,然后您才能使用它...

【讨论】:

【参考方案4】:

您可以保留一组 ImageView。

ImageView[] mImageViews = new ImageView[10];
        for(int i=1;i<10;i++)  
            mImageViews[i] = new ImageView(this); 
        

并像 mImageViews[2] 或 mImageViews[5] 访问这些

【讨论】:

以上是关于Android如何获取当前ImageView中的src资源的主要内容,如果未能解决你的问题,请参考以下文章

如何检查当前图像资源附加到android xml中的ImageView?

android 存在数据库中的动态图片,如何读取出来,显示在ImageView中

Android ImageView 获取图片信息后进行比较

如何获取imageView中当前内容的相关信息并比较?

从 ImageView 获取图像

如何在此应用程序中保持图像视图的纵横比? 【Android、ImageView、长宽比、ScrollView】