当前位置: 代码迷 >> Android >> Android 中图片显示有关问题
  详细解决方案

Android 中图片显示有关问题

热度:43   发布时间:2016-05-01 21:17:49.0
Android 中图片显示问题
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;    }
  相关解决方案