2016-10-28 112 views
0

如果有可能将ImageView写入另一个ImageView?ImageView内容从另一个ImageView加载到另一ImageView

例如:

 ImageView image1= (ImageView)findByVie(R.id.image1) 
     ImageView image2= (ImageView)findByVie(R.id.image2) 

     Glide.with(context).load(url).into(image1); 

    image2=image1 
// I want to write image from image 1 
//to image 2 without loading it again from internet. 

回答

1

使用此:

ImageView image1 = (ImageView)findViewById(R.id.image1); 
ImageView image2 = (ImageView)findViewById(R.id.image2); 

Glide.with(context).load(url).into(image1); 
image2.setImageDrawable(image1.getDrawable(); 

然而,随着路滑翔的作品,它缓存它已经加载,以便再次调用Glide.with(context).load(url).into(image2);只会加载镜像图像从缓存中,而不是从远程服务器再次。

编辑:

如果你打电话getDrawable调用滑翔那么它将无法工作后伸直,因为滑翔仍获取图像,从而使第一ImageView的仍然是空的。你需要把你的使用滑翔从URL加载图像时使用,以滑翔的回调,以确保已经加载了调用getDrawable

Glide.with(context).load(url).listener(new RequestListener).into(image1); 
+0

image2.setImageDrawable(image1.getDrawable()一次加载图像。我想这种方式,图像是空的好,我想到了缓存机制我不确定滑动如何处理它 – Expiredmind

+1

你需要在图像加载后调用它,在分钟时如果你打电话给Glide,则会告诉Glide获取图像,并在图像加载之前填充第二个图像视图。 (上下文).load(url).listener(new RequestListener).into(image1)然后在回调中添加getDrawable代码,然后它应该工作 – MichaelStoddart

0
Bitmap bm=((BitmapDrawable)imageView1.getDrawable()).getBitmap(); 
imgview2.setImageBitmap(bm); 
0

之前。 Glide将使用它的缓存为第二个imageview加载图像,它不会使用互联网在第二个imageview中加载相同的图像。

您也可以使用下面的方法来肯定

Glide.with(this).load("url").into(new SimpleTarget<GlideDrawable>() { 
       @Override 
       public void onResourceReady(GlideDrawable resource, GlideAnimation<? super GlideDrawable> glideAnimation) { 

        image1.setImageDrawable(resource); 
image2.setImageDrawable(resource); 


       } 
      });