因为Imagview中的setscaleType中 没有一种 宽度铺满全屏,高度如果不够自动剪裁下半部分的样式。 所以自定义一个简单的
能满足项目需要的Imageview,能保证图片不被拉伸,宽度铺满,高度从上到下自适应。
核心代码如下:
public class ScaleImageview extends ImageView {
public ScaleImageview(Context context) {
super(context);
}
public ScaleImageview(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public ScaleImageview(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
Drawable drawable = getDrawable();
int height = drawable.getIntrinsicHeight();
int width = drawable.getIntrinsicWidth();
}
@Override
protected void onDraw(Canvas canvas) {
Bitmap bitmap = getBitmap();
Paint paint = new Paint();
canvas.drawBitmap(bitmap, 0, 0, paint);
}
private Bitmap getBitmap() {
Drawable drawable = getDrawable();
Bitmap bitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
double scale = getWidth() / drawable.getIntrinsicWidth();
drawable.setBounds(0, 0, getWidth(), getWidth() * drawable.getIntrinsicHeight() / drawable.getIntrinsicWidth());
drawable.draw(canvas);
return bitmap;
}
}