我从图片的垂直部分创建了一个位图。但我只想显示20%的图片,并在资源文件夹中有多种尺寸。当我使用静态像素时,结果为假。
Bitmap SOURCE_BITMAP = BitmapFactory.decodeResource(getResources(), R.drawable.bg_main);
int START_Y = 15;
int HEIGHT_PX = 500;
// Crop bitmap
Bitmap newBitmap = Bitmap.createBitmap(SOURCE_BITMAP, 0, START_Y, SOURCE_BITMAP.getWidth(), HEIGHT_PX, null, false);
// Assign new bitmap to ImageView
ImageView image = (ImageView)findViewById(R.id.iv_bg);
image.setImageBitmap(newBitmap);
我的想法是将HEIGHT_PX
分配给(int)(SOURCE_BITMAP.getHeight() * 0.2f);
但是没有更好的方法来创建没有像素声明的位图(=相对于大小)?
答案 0 :(得分:1)
要从像素15开始获取20%的位图,您可以这样做:
// retrieve screen density
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics( metrics );
float density = metrics.density;
// read Bitmap from resources
Bitmap source = BitmapFactory.decodeResource(getResources(), R.drawable.bg_main);
int y = Math.round(15f * density);
int height = Math.round(source.getHeight() * 0.2f);
// Crop bitmap
Bitmap newBitmap = Bitmap.createBitmap(source, 0, y, source.getWidth(), height);