フルイメージの背景を持つAndroidタブレット用の Android アプリを実行していますが、 9-patch を使用できないため、背景をウィンドウ サイズにできるだけ近づける必要があります。
私がテストしたこと:
drawable-ldpi
、、などのフォルダーを使用してテストしましたdrawable-mdpi
が、画像をウィンドウに合わせたいので、うまく機能しません。
今、私はdrawable-wxxxdp
、フォルダを使って、実際のウィンドウ サイズに近いサイズの画像を作成しようとしています。
だから私はこのフォルダ構造を持っています(各フォルダには異なる画像があります。つまり、同じサイズの画像はフォルダごとに異なります):
drawable-w800dp-mdpi // 800x600px image
drawable-w800dp-hdpi // 800x600px image
drawable-w1024dp-mdpi // 1024x600px image
drawable-w1024dp-hdpi // 1024x600px image
drawable-w1280dp-mdpi // 1280x800 image
drawable-w1280dp-hdpi // 1280x800 image
drawable-w1280dp-xhdpi // 1280x800 image
問題は、別のタブレットでアプリをテストするときに、期待されるフォルダーから常に画像を取得するとは限らないことです。
例: 1280x800px および 160 dpi のタブレットでは、( を使用してDisplayMetrics
) 1280x752 のウィンドウ サイズを報告し、フォルダーから 1280x800px の画像を使用しdrawable-w1280dp-mdpi
、上部と下部から画像の一部を切り取ります。しかし、 1280x736 のウィンドウ サイズ
を報告する1280x800px および 213dpis のタブレットでは、画像は... drawable-w1024dp フォルダーの 1 つのような他のフォルダーから取得すると予想されますが、そのフォルダーからではありません。 .drawable-w800dp-hdpi
一方、 1024x552 のウィンドウ サイズを報告する1024x600px および 160dpisのような構成でエミュレーターを試すと、フォルダーから画像を取得しますが、縮小して画面の中央に配置するため、すべて非常に大きな境界線で終了します。画像の周り。drawable-w1024dp-hdpi
ファイル:
私が使用しているテストレイアウトは次のとおりです。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ImageView
android:id="@+id/appBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="center"
android:src="@drawable/background_image"
tools:ignore="ContentDescription" />
</RelativeLayout>
そして私のマニフェストファイルには次のものがあります:
<uses-sdk
android:minSdkVersion="13"
android:targetSdkVersion="15" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"/>
更新: 私の活動コード:
public class ScreenTest extends Activity {
private int width;
private int height;
private int dpis;
private String sdpis;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Ask for a full screen window
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_screen_test);
}
/* (non-Javadoc)
* @see android.app.Activity#onCreateView(java.lang.String, android.content.Context, android.util.AttributeSet)
*/
@Override
public View onCreateView(String name, Context context, AttributeSet attrs) {
return super.onCreateView(name, context, attrs);
}
/* (non-Javadoc)
* @see android.app.Activity#onStart()
*/
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
// Get the info about the screen
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();// size.x;
height = display.getHeight();
DisplayMetrics outMetrics = new DisplayMetrics();
display.getMetrics(outMetrics);
dpis = outMetrics.densityDpi;
sdpis = "";
switch (dpis) {
case DisplayMetrics.DENSITY_DEFAULT:
sdpis = "160";
break;
case DisplayMetrics.DENSITY_HIGH:
sdpis = "240";
break;
case DisplayMetrics.DENSITY_LOW:
sdpis = "120";
break;
case DisplayMetrics.DENSITY_XHIGH:
sdpis = "320";
break;
default:
sdpis +=dpis;
break;
}
Log.d("DPIs", "dpis: " + dpis + " sdpis: " + sdpis + " width: " + width + " height: " + height);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_screen_test, menu);
return true;
}
}
概要:
だから、アプリがどのフォルダから画像を取得するかを予測する方法がわかりませんか? そしてそれはそれで何をしますか?(スケール、トリミング...)
余分な背景:
Android-resorucesタグに関するすべての質問を確認しました。公式ドキュメントを何度か読みました。
およびいくつかの関連する質問:
- ベストマッチの見つけ方
- Android リソースの「ベスト マッチ」フォールバック ロジック
- アンドロイドで描画可能な動的ビットマップ
- Android が低いリソースではなく高いリソースのリソースを使用するのはなぜですか?
更新:フォルダー名のタイプミスを修正しました。