gpt4 book ai didi

android - 如何在 Android 中为不同的分辨率使用不同的背景图片?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:47:12 24 4
gpt4 key购买 nike

我正在为 Android 平板电脑 开发一个具有完整图像背景 的 Android 应用程序,但我不能使用 9 补丁 ,所以我需要背景尽可能接近窗口大小。

我测试过的内容:

我已经使用 drawable-ldpidrawable-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 dpis 平板电脑中,报告(使用 DisplayMetrics)1280x752 的窗口大小,它使用drawable-w1280dp-mdpi 文件夹中的 1280x800px 图像,并从顶部和底部剪切了一些图像。但是在 1280x800px 和 213dpis 的平板电脑上报告 1280x736 的窗口大小 它从 drawable-w800dp-hdpi 中获取图像...我希望从其他文件夹中获取它,例如 drawable- w1024dp 文件夹...但不是来自那个...

另一方面,如果我尝试在模拟器上使用类似1024x600px 和 160dpis 的配置来报告1024x552 的窗口大小,它会从 获取图像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>

在我的 list 文件中我有:

<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"/>

更新:我的 Activity 代码:

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 上的所有问题tag,官方文档看了好几遍:

和一些相关问题:

更新:修复了文件夹名称中的拼写错误。

最佳答案

如果你想定位特定的设备。或介于两种分辨率之间的所有设备,那么您必须先找到设备的宽度。像这样

Display display ; 
int width =0;
display = getWindowManager().getDefaultDisplay();
width = display.getWidth();

之后,您可以使用宽度条件进行 if 语句,并针对不同的屏幕尺寸进行不同的布局。这不是推荐的方法,但在某些情况下效果很好

    if(width>=750)
{
setContentView(R.layout.screen_blue_heigh);
}
else if(width>=500&&width<750)
{
setContentView(R.layout.screen_blue_heigh);
}
else if(width<500&&width>=330)
{
setContentView(R.layout.screen_blue_medium);
}
else if(width<320)
{
setContentView(R.layout.screen_blue_low);
}

希望对您有所帮助。

关于android - 如何在 Android 中为不同的分辨率使用不同的背景图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13271340/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com