我正在尝试在 x 中制作位图可绘制重复平铺,对齐此可绘制视图底部(按颜色填充可用空间),因此我的可绘制对象不应在 y 中分层。
我必须达到一个目标。
源背景图片:
在大屏幕中填充此图片上方可用空间的颜色:#FF5cc8f2
这是第一个变体:
BitmapDrawable tile = (BitmapDrawable) res
.getDrawable(R.drawable.background);
tile.setTileModeX(Shader.TileMode.REPEAT);
view.setBackgroundColor(res.getColor(R.color.background));
view.setBackgroundDrawable(tile);
结果:
如您所见,我在云层下方有不需要的空白。
第二种变体:
BitmapDrawable bd = (BitmapDrawable) res.getDrawable(R.drawable.background);
WindowManager wm = (WindowManager) AvApplication.getInstance().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
width = display.getWidth();
} else {
Point size = new Point();
display.getSize(size);
width = size.x;
}
int intrinsicHeight = bd.getIntrinsicHeight();
Rect bounds = new Rect(0,0,width,intrinsicHeight);
bd.setTileModeX(TileMode.REPEAT);
bd.setBounds(bounds);
Bitmap bitmap = Bitmap.createBitmap(bounds.width(), bounds.height(), bd.getBitmap().getConfig());
Canvas canvas = new Canvas(bitmap);
bd.draw(canvas);
BitmapDrawable bitmapDrawable = new BitmapDrawable(res, bitmap);
view.setBackgroundDrawable(bitmapDrawable);
结果:
现在图像在底部,但它被拉伸了
不要在意一个屏幕截图是横向的,第二个是纵向的——结果会在两个方向上进行检查。
我需要你的帮助..