2016-04-28 66 views
3

我正在开发一个即时聊天应用程序。我在一个活动即聊天,组和联系人中有3个选项卡。组选项卡中,我有一个列表视图,使用BaseAdapter.Now列表视图可以包含图像。点击图像时,我想要全屏显示它。全屏显示图像点击它

内部adpater我使用下面的代码上点击的ImageView:

//On clicking image,display the image in full screen 


imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(context, FullImageActivity.class); 
       intent.putExtra("image", image); 
       context.startActivity(intent);    
      } 
     }); 

这里的“图象”是图像的基部64表示。

FullImageActivity.java

public class FullImageActivity extends AppCompatActivity { 
    ImageView imgFullImage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_full_image); 

     ///findViewBYID 
     imgFullImage = (ImageView) findViewById(R.id.fullImage); 

     Bundle bundle = getIntent().getExtras(); 
     String image = bundle.getString("image"); 
     Bitmap bitmap = decodeImage(image); 
     imgFullImage.setImageBitmap(bitmap); 
    }  

    private Bitmap decodeImage(String data) { 
     byte[] b = Base64.decode(data, Base64.DEFAULT); 
     Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
     return bmp; 
    } 
} 

但它不是为我工作。当我点击它移动到FullIMageActivity瞬间搬回集团Tab.Please帮我解决这个问题。

+0

传递的图像作为意图的一部分可能不是一个好主意:)你为什么不保存在某个地方的形象在你的内部或外部存储并提供意向下一个活动的路径? –

+0

嘿Deepak你用XMPP和Asmack自制lib ..吗? –

+0

@NikhilBorad:我正在使用套接字。io客户端库在我的应用程序。 –

回答

1

你做错了,这是你如何能做到这

在你的第一个活动

转换ImageView为位图首先

imageView.buildDrawingCache(); 
Bitmap bitmap = imageView.getDrawingCache(); 

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("BitmapImage", bitmap); 

,并在第二活动

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 

然后在您的中显示位图。

1

这里Base64图像是可以意图传递给其他活动的大字符串数据是不好的想法,因为在你可以丢失数据或应用程序获得更多的负载。用于制作一个存储Base64字符串并检索它的模型类。 如何?见代码

ModelBase64.java

class ModelBase64{ 
    public static String base64Image; 
} 

现在分配图像串base64Image

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ModelBase64.base64Image=image; 
      Intent intent = new Intent(context, FullImageActivity.class); 
      context.startActivity(intent);    
     } 
    }); 

另一类

FullImageActivity.java

现在retrive
public class FullImageActivity extends AppCompatActivity { 
ImageView imgFullImage; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_full_image); 

    ///findViewBYID 
    imgFullImage = (ImageView) findViewById(R.id.fullImage); 

    // Bundle bundle = getIntent().getExtras(); 
    //String image = bundle.getString("image"); 
    String image = ModelBase64.base64Image; 
    Bitmap bitmap = decodeImage(image); 
    imgFullImage.setImageBitmap(bitmap); 
}  

private Bitmap decodeImage(String data) { 
    byte[] b = Base64.decode(data, Base64.DEFAULT); 
    Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
    return bmp; 
} 
} 
0

只为你最适合的解决方案是ImageViewPopUpHelper。 https://github.com/juliomarcos/ImageViewPopUpHelper

从此URL获取源代码并生成类名“ImageViewPopUpHelper”。之后,每当你想看到弹出的点击,该图像上定义setOnClicklistner像

profile_image.setOnClickListener(new View.OnClickListener() 
{ 
    @Override public void onClick(View v) { 
     ImageViewPopUpHelper.enablePopUpOnClick(activity, profile_image, profile_image.getDrawable()); 
    } 
}); 
+0

你应该发布一些部分代码并解释一些东西。并且您可以在评论中发布不正确的链接 –

+0

从此URL获取源代码并创建一个类名“ImageViewPopUpHelper”。之后,当你想看到弹出点击时,定义setOnClicklistner在该图像像profile_image.setOnClickListener(新的View.OnClickListener(){ @Override public void onClick(View v){ ImageViewPopUpHelper.enablePopUpOnClick(activity,profile_image, profile_image.getDrawable()); } }); –

+0

明白了兄弟..? –