缩放位图以适应854宽屏幕

时间:2012-04-14 12:36:47

标签: android scale screen-resolution

我开始整理一款游戏,但我对屏幕分辨率和密度有些混淆。

我的图像宽度为800像素,已添加到可绘制的mdpi文件夹中。 它绘制得很好,但在854像素宽的屏幕上,有54像素的间隙。

使图像适合屏幕的最佳方法是什么?

感谢

1 个答案:

答案 0 :(得分:0)

将以下类添加到项目中并像这样更改布局

查看

<my.package.name.AspectRatioImageView
    android:layout_centerHorizontal="true"
    android:src="@drawable/my_image"
    android:id="@+id/my_image"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:adjustViewBounds="true" />

<强>类

package my.package.name;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.ImageView;

/**
 * ImageView which scales an image while maintaining
 * the original image aspect ratio
 *
 */
public class AspectRatioImageView extends ImageView {

    /**
     * Constructor
     * 
     * @param Context context
     */
    public AspectRatioImageView(Context context) {

        super(context);
    }

    /**
     * Constructor
     * 
     * @param Context context
     * @param AttributeSet attrs
     */
    public AspectRatioImageView(Context context, AttributeSet attrs) {

        super(context, attrs);
    }

    /**
     * Constructor
     * 
     * @param Context context
     * @param AttributeSet attrs
     * @param int defStyle
     */
    public AspectRatioImageView(Context context, AttributeSet attrs, int defStyle) {

        super(context, attrs, defStyle);
    }

    /**
     * Called from the view renderer.
     * Scales the image according to its aspect ratio.
     */
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = width * getDrawable().getIntrinsicHeight() / getDrawable().getIntrinsicWidth();
        setMeasuredDimension(width, height);
    }
}