将位图设置为imageview内的特定大小

时间:2014-06-11 23:36:21

标签: java android bitmap imageview

尝试调整位图大小并设置为imageview的特定部分。 imageview是方形的,我希望在右下角有位图。宽度为imageview的10%,高度为30%。

int w = imageview.getWidth();
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.vertical_bar_green);
imageview.setImageBitmap(Bitmap.createScaledBitmap(bm, w/10, w*30/100, false));
imageview.setScaleType(ScaleType.FIT_END);

结果是位图是imageview的整个高度,宽度要大得多。

如何设置特定点来放置位图?

1 个答案:

答案 0 :(得分:0)

来自END的文档(FIT_END使用的矩阵)。

  

计算将保持原始src宽高比的比例,但是   还将确保src完全适合dst。 至少一个轴   (X或Y)将完全适合。 END将结果与右对齐   dst的底边。

您可能希望使用自定义矩阵,可能使用setRectToRect()构建。

例如:

Matrix matrix = new Matrix();
RectF from = new RectF(0, 0, bm.getIntrinsicWidth(), bm.getIntrinsicHeight());
RectF to = new RectF(view.getWidth() * 0.9, view.getHeight() * 0.7, view.getWidth(), view.getHeight());
matrix.setRectToRect(from, to, Matrix.ScaleToFit.FILL);

view.setScaleType(ScaleType.MATRIX);
view.setImageMatrix(matrix);

(我不确定您是否要保留原始比例,如果需要,请使用FIT_END作为setRectToRect()