【发布时间】:2018-08-23 18:04:28
【问题描述】:
我正在开发一个墙纸应用程序,我在 GridView 中借助 firebase 和 Picasso 显示图像。我想从服务器检索图像并根据屏幕分辨率调整其大小。设图片尺寸为3000 * 5000,设备屏幕尺寸为720 * 1280,则图片裁剪为720 * 1280。
https://developer.android.com/topic/performance/graphics/load-bitmap 给出了解决方案,但它调整了可绘制文件的大小并具有固定大小。
但我想根据设备屏幕大小调整服务器图像的大小。
RecyclerView ViewHolder
public void setDetails(Context ctx, String image){
ImageView mImageTv = mView.findViewById(R.id.rImageView);
Picasso.get().load(image).into(mImageTv);
}
使用 putExtra 将图像从 Fragment 传递到 FullscreenActivity
ViewHolder viewHolder = super.onCreateViewHolder(parent, viewType);
viewHolder.setOnclickListener(new ViewHolder.ClickListener() {
@Override
public void onItemClick(View view, int position) {
ImageView mImageView = view.findViewById(R.id.rImageView);
Drawable mDrawable = mImageView.getDrawable();
Bitmap mBitmap = ((BitmapDrawable) mDrawable).getBitmap();
Intent intent = new Intent(view.getContext(), PostDetailsActivity2.class);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] bytes = stream.toByteArray();
intent.putExtra("image", bytes);
startActivity(intent);
}
在全屏活动中显示图像
mImageTv = findViewById(R.id.full_imageView1);
byte[] bytes = getIntent().getByteArrayExtra("image");
Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
mImageTv.setImageBitmap(bmp);
如果可以的话,请帮助我....如果有人需要更多代码细节或我的问题,请发表评论....谢谢
【问题讨论】:
-
我相信您想要的是将 Firebase 下载的图像作为缩略图加载并调整大小到 GridView 中?
标签: android android-imageview android-image android-bitmap