我正在尝试使用带有BitmapDrawable的linearlayout为活动创建模糊背景。 原始和模糊的位图类似于100x100。我想为手机分辨率统一缩放(例如1080p,这不是正方形)。我在运行时获得了背景图标。
LinearLayout layout = (LinearLayout) findViewById(R.id.mylinearlayout);
Bitmap bmp = imgLoader.getBitmap(iconUrl);
//Blur using this thread http://stackoverflow.com/questions/14780006/transparent-blurry-view-which-blurs-layout-underneath
Bitmap blurredBmp = CommonUtils.blurBitmap(bmp, Constants.RADIUS);
BitmapDrawable bmpdrawable = new BitmapDrawable(getResources(),blurredBmp);
bmpdrawable.setAlpha(Constants.ALPHA);
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(bmpdrawable);
} else {
layout.setBackground(bmpdrawable);
}
现在,问题: 当我设置背景时,100x100基本上被拉伸到非方形手机分辨率,看起来很奇怪。
我想要的:用拉伸的位图填充整个活动背景。如果它的一部分被剪裁但是需要保持纵横比,那就没关系。
我尝试过:设置布局背景的很多线程建议使用imageview作为元素之一+使用gravity和fill_parent。我不想这样做,因为我有其他图像要在屏幕上显示。
我在创建模糊位图或发送不同宽度/高度时尝试了Bitmap.createScaledBitmap它无法正常工作。任何帮助将不胜感激。
在不理解问题的情况下将此标记为另一个线程的欺骗并不是很酷。
感谢
答案 0 :(得分:0)
好的,这很有效。
LinearLayout layout = (LinearLayout) findViewById(R.id.testreportlinearlayout);
Bitmap bmp = imgLoader.getBitmap(iconUrl);
Bitmap blurredBmp = CommonUtils.blurBitmap(bmp, Constants.RADIUS);
Bitmap scaledBmp = Bitmap.createScaledBitmap(blurredBmp, MAX_OF_NEW_XY, MAX_OF_NEW_XY, false);
BitmapDrawable scaledBmpdrawable = new BitmapDrawable(getResources(), scaledBmp);
scaledBmpdrawable.setAlpha(Constants.ALPHA);
scaledBmpdrawable.setGravity(Gravity.CENTER);
if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
layout.setBackgroundDrawable(scaledBmpdrawable);
} else {
layout.setBackground(scaledBmpdrawable);
}
答案 1 :(得分:0)
这个问题有很多解决方案。
只设置为颜色
ShapeDrawable bgShape = (ShapeDrawable )parentLayout.getBackground();
bgShape.getPaint().setColor(Color.BLACK);