Android 单击图像时全屏显示图像
我正在使用即时聊天应用程序。我在活动中有3个选项卡,即聊天、组和联系人。在组选项卡中,我有一个使用BaseAdapter填充的列表视图。现在列表视图可以包含图像。单击图像后,我想全屏显示它 在adpater内部,我在单击imageview时使用以下代码:Android 单击图像时全屏显示图像,android,android-imageview,Android,Android Imageview,我正在使用即时聊天应用程序。我在活动中有3个选项卡,即聊天、组和联系人。在组选项卡中,我有一个使用BaseAdapter填充的列表视图。现在列表视图可以包含图像。单击图像后,我想全屏显示它 在adpater内部,我在单击imageview时使用以下代码: //On clicking image,display the image in full screen imageView.setOnClickListener(new View.OnClickListener() {
//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);
}
});
这里“image”是图像的基本表示形式
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;
}
}
class ModelBase64{
public static String base64Image;
}
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;
}
}
但它对我不起作用。当我单击它时,它将移动到FullIMageActivity并立即移回“组”选项卡。请帮助我修复它。你做错了,这就是你可以做到的 在你的第一次活动中 首先将
ImageView
转换为位图
imageView.buildDrawingCache();
Bitmap bitmap = imageView.getDrawingCache();
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("BitmapImage", bitmap);
在第二个活动中
Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage");
然后在您的
图像视图中显示位图
此处Base64
图像是一个大数据串,可以传递给其他活动是不好的主意,因为这样可能会丢失数据或使应用程序获得更多负载。用于生成一个存储在Base64
字符串中的模型类并检索它的如何?请参见下面的代码
ModelBase64.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;
}
}
class ModelBase64{
public static String base64Image;
}
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;
}
}
现在将图像字符串分配给base64图像
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
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;
}
}
class ModelBase64{
public static String base64Image;
}
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;
}
}
简单来说,最适合您的解决方案是ImageViewPopusPer。
从该url获取源代码,并将类名设为“ImageViewPoputUpulper”。之后,每当您想在单击时看到弹出窗口时,在该图像上定义setOnClicklistner,如下所示
profile_image.setOnClickListener(new View.OnClickListener()
{
@Override public void onClick(View v) {
ImageViewPopUpHelper.enablePopUpOnClick(activity, profile_image, profile_image.getDrawable());
}
});
将图像作为intent的一部分传递可能不是一个好主意:)为什么不将图像保存在内部或外部存储器中的某个位置,并提供intent中下一个活动的路径?嘿,Deepak,你在用XMPP和Asmack库制作吗?@NikhilBorad:我在我的应用程序中使用socket.io-client库。@NikhilBorad:当然。来吧。。。你应该发布一些零件代码并解释一些东西。您可以在注释中发布不正确的链接,从这个url获取源代码,并将类名命名为“ImageViewPopusUpsulPer”。之后,无论何时您希望在单击时看到弹出窗口,都可以在该图像上定义setOnClicklistner,如profile_image.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){imageViewPopupUpulper.enablePopUpOnClick(activity,profile_image,profile_image.getDrawable();}});明白了,但你必须更新你的答案,并将此评论放在你的帖子中。