ゲームを組み立て始めていますが、画面の解像度と密度に少し混乱しています。
幅 800 ピクセルの画像があり、drawable mdpi フォルダーに追加されています。問題なく描画されますが、854 ピクセル幅の画面では 54 ピクセルのギャップがあります。
画像を画面に合わせる最良の方法は何ですか?
ありがとう
ゲームを組み立て始めていますが、画面の解像度と密度に少し混乱しています。
幅 800 ピクセルの画像があり、drawable mdpi フォルダーに追加されています。問題なく描画されますが、854 ピクセル幅の画面では 54 ピクセルのギャップがあります。
画像を画面に合わせる最良の方法は何ですか?
ありがとう
次のクラスをプロジェクトに追加し、次のようにレイアウトを変更します
意見
<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);
}
}