Android中ImageView显示的图片太大,想把它缩小以固定值显示,怎么办
------解决方案--------------------
<ImageView android:id="@+id/mainbg"
android:src="@drawable/mainbg"
android:scaleType="center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerVertical="true"/>
如果要固定尺寸,假设长宽各为100px
<ImageView android:id="@+id/mainbg"
android:src="@drawable/mainbg"
android:scaleType="center"
android:layout_width="100px"
android:layout_height="100px"
android:layout_centerVertical="true"/>
------解决方案--------------------
- Java code
public static BitmapDrawable createNewIcon(BitmapDrawable oldIcon, Context context, int id) { BitmapDrawable icon = oldIcon; final Bitmap.Config c = icon.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565; int sIconWidth, sIconHeight; sIconWidth = sIconHeight = (int) context.getResources().getDimension( R.dimen.img_width); int width = sIconWidth; int height = sIconHeight; Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), id); float scale = 1.0f; int iconWidth = icon.getIntrinsicWidth(); int iconHeight = icon.getIntrinsicHeight(); // Log.e("12", "BitmapDrawable:iconwidth"+iconWidth); // Log.e("12", "BitmapDrawable:iconHeight"+iconHeight); // Log.e("12", "BitmapDrawable:width"+width); // Log.e("12", "BitmapDrawable:height"+height); final Canvas canvas = new Canvas(); Rect sOldBounds = new Rect(); if (width > 0 && height > 0) { // if (width < iconWidth || height < iconHeight || scale != 1.0f) { final float ratio = (float) iconWidth / iconHeight; if (iconWidth > iconHeight) { height = (int) (width / ratio); } else if (iconHeight > iconWidth) { width = (int) (height * ratio); } final Bitmap thumb = Bitmap .createBitmap(sIconWidth, sIconHeight, c); canvas.setBitmap(thumb); sOldBounds.set(icon.getBounds()); final int x = (sIconWidth - width) / 2; final int y = (sIconHeight - height) / 2; icon.setBounds(x, y, x + width, y + height); canvas.drawBitmap(bmp, new Matrix(), null); icon.draw(canvas); icon.setBounds(sOldBounds); icon = new BitmapDrawable(context.getResources(), thumb); // } else if (iconWidth < width && iconHeight < height) { // // final Bitmap.Config c1 = Bitmap.Config.ARGB_8888; // final Bitmap thumb = Bitmap.createBitmap(sIconWidth, sIconHeight, // c1); // canvas.setBitmap(thumb); // sOldBounds.set(icon.getBounds()); // final int x = (width - iconWidth) / 2; // final int y = (height - iconHeight) / 2; // icon.setBounds(x, y, x + iconWidth, y + iconHeight); // canvas.drawBitmap(bmp, new Matrix(), null); // icon.draw(canvas); // icon.setBounds(sOldBounds); // icon = new BitmapDrawable(context.getResources(), thumb); // Log.e("12", // "iconWidth < widthBitmapDrawable:iconwidth"+iconWidth); // Log.e("12", "BitmapDrawable:iconHeight"+iconHeight); // Log.e("12", "BitmapDrawable:width"+width); // Log.e("12", "BitmapDrawable:height"+height); // } } return icon; }