Hatena::ブログ(Diary)

BASHI_BASHI このページをアンテナに追加 RSSフィード Twitter

2011-04-03

[][]AndEngineでhdpi/ldpi/mdpiから画像を出し分ける/Deviceの幅を取得/フルスクリーン設定

AndEngineで画像をテクスチャ化するとき、サンプル通りに、assetsフォルダを作って読み込む方法をとっていました。
しかし、、、Deviceのdpiに応じて画像を出し分けるメソッドを最近発見したのでメモ。

//textureの幅と高さは32,64,128,256,512,1024から選ぶ
Texture texture = new Texture(128, 128, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
TextureRegion textureRegion = TextureRegionFactory.createFromResource(texture, this, R.drawable.icon, 0, 0);
engine.getTextureManager().loadTexture(texture);


TextureRegionFactory.createFromResource() メソッドを使います。

ただ、BaseGameActivityを継承しているActivityで


public final float CAMERA_WIDTH = 320;
public final float CAMERA_HEIGHT = 480;

@Override
public Engine onLoadEngine() {
	Camera mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
	Engine engine = new Engine(new EngineOptions(true, ScreenOrientation.PORTRAIT, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), mCamera).setNeedsSound(true).setNeedsMusic(true));
	return engine;
}



で、デバイスの幅をうまく320×480で調整してくれるんですが、その辺との兼ね合いが未だによくわからず。。
Deviceごとに最適な画像を表示させるのは、Androidでめんどくさいことのひとつだと思うのですが、もう一歩ですね。


このメソッドを知る前に、自分で画像を出し分けるところを作ろうとしていたのですが、そのとき調べたことなどをここにメモっておきます。(無駄な時間だったかもしれませんが、これを知れただけでもよしとするか。。。)

//フルスクリーン処理
requestWindowFeature(Window.FEATURE_NO_TITLE);  
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        
//Deviceの情報を取得
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();

DisplayMetrics displayMetrics = new DisplayMetrics();
display.getMetrics(displayMetrics);

//Log
Log.v("xdpi",            String.valueOf(displayMetrics.xdpi)); 
Log.v("ydpi",            String.valueOf(displayMetrics.ydpi)); 
Log.v("widthPixels",    String.valueOf(displayMetrics.widthPixels));
Log.v("heightPixels",    String.valueOf(displayMetrics.heightPixels));
Log.v("density",        String.valueOf(displayMetrics.density));
Log.v("scaledDensity",    String.valueOf(displayMetrics.scaledDensity));

Log.v("width",            String.valueOf(display.getWidth()));
Log.v("height",            String.valueOf(display.getHeight()));
Log.v("orientation",    String.valueOf(display.getOrientation()));
Log.v("refreshRate",    String.valueOf(display.getRefreshRate()));
Log.v("pixelFormat",    String.valueOf(display.getPixelFormat()));



参考


画面サイズを取得する

完全にフルスクリーンにしたい

画面回転時にActivityの再起動を防ぐ AndroidManifest.xml

ディスプレイの情報を取得するには

Android 画面サイズに応じて layout を変える

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/yitabashi0913/20110403/p1