RelativeLayout动态设置背景问题

ze_lin_huang 2014-11-24 10:07:50
使用RelativeLayout动态设置背景,加载sd卡图片铺满整个屏幕。

图片的尺寸不定,可能有点是1000x1000,或者800x750等等这样

String photo="/mnt/sdcard/photo.jpg";
如果我这样写:
layout_photo.setBackgroundDrawable(Drawable.createFromPath(photo));
显示的结果是这样:

看到有拉伸

如果我这样写:
Bitmap bm = BitmapFactory.decodeFile(photo);
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
Bitmap bm1 = Bitmap.createBitmap(bm, 0, 0, width, height);
Drawable bd = new BitmapDrawable(getResources(), bm1);
layout_photo.setBackgroundDrawable(bd);
显示的结果是这样:

只能看到图片一部分,但是没有拉伸。

-----------------------------------------------------------------------------------------

我想请教那位高手,有没有方法:能够将整个图片显示在屏幕等比例缩放不拉伸,看起来很自然的。谢谢啦
...全文
1095 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ze_lin_huang 2014-11-27
  • 打赏
  • 举报
回复
谢谢各位回答。
将ImageView放到布局scaleType改成 android:scaleType="centerCrop"
layout_photo.setImageBitmap(BitmapFactory.decodeFile(photoPath));

虽然会剪切一部分图像,但是是填满整个view的
看起来,效果还可以。

谢谢各位了。


Darcy杨 2014-11-26
  • 打赏
  • 举报
回复
楼上正解。 或者也可以定义一个 bitmap drawable,然后设置 gravity。
Birds2018 2014-11-25
  • 打赏
  • 举报
回复
当加载图片的时候需要用BitmapFactory.options 去缩放尺寸就好了。 重点是你要控制layout_photo的大小如果是全屏显示 那图片可能就要放大到全屏了。如果固定你需要缩放图片尺寸, 如果麻烦建议你用ImageView放到布局里面 作为背景比较灵活。

80,469

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧