我正在尝试让我的Android应用程序支持多种屏幕尺寸。我正在尝试通过使用不同的dimens.xml文件更改布局的dp值来将替代布局保持在最低限度。
糟糕的部分是我有9个不同的文件夹,其中包含尺寸文件(值,值-sw320dp,值-sw480dp,值-sw600dp和值-sw720dp用于更高的api,值 - 小,值 - 正常,值 - 较大的,值为xlarge for old apis)我讨厌将我的sw值文件夹中的粘贴复制到旧的值文件夹中。
我知道如何创建layout.xml文件别名like this shows,但有人知道你是否可以为尺寸文件做到这一点?我尝试在我的values.xml中创建多个文件,但当然它不起作用,因为我的两个文件具有相同名称的属性,这会导致冲突。
我可以在values-sw600dp
dimens-large.xml
中命名我的尺寸文件,并在values-large
文件夹中引用它吗?
答案 0 :(得分:2)
您可以动态更改布局组件的大小。 在这里,我根据480 * 854大小的屏幕创建第一个xml布局。下面的代码根据屏幕大小自动调整UI。
int width = 0;
int height = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getTheDisplay();
getUiComponents();
adjustUIComponents();
}private void getTheDisplay() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
width = dm.widthPixels;
height = dm.heightPixels;
}private void adjustUIComponents() {
// myButton is button from layout xml file
adjustUI(myButton);
}private void adjustUI(View v) {
//myButton is in LinearLayout
LinearLayout.LayoutParams(android.widget.LinearLayout.LayoutParams)v.getLayoutParams();
lp.width = calculateWidth(211);//211 is width of button in px given in xml
lp.height = calculateHeight(80);//80 is height of button in px given in xml
v.setLayoutParams(lp);
}private int calculateWidth(int w) {
int wi = (w * width) / 480;
return wi;
}
private int calculateHeight(int h) {
int hi = (h * height) / 854;
return hi;
}
答案 1 :(得分:0)
我最终使用了Merlevede的建议,并在eclipse的构建路径中添加了一个脚本。
具体来说,选择android项目,转到Project - >属性 - >建设者 - >新
创建“程序”构建器,然后选择可在文件系统上本机执行的文件。就个人而言,我写了一个3行java应用程序,震惊了,然后编写了一个只调用java jar的批处理文件。批处理文件是我指定为构建器的可执行文件。
然后我将该构建器放在构建列表的顶部,瞧,我的文件正在被自动复制!