Android以不同的分辨率/密度对齐ImageViews

时间:2012-02-21 11:52:30

标签: android layout android-layout

我从我的客户端收到了PSD布局,而且它包含一些固定的背景图像,在这些图像下方应该有一些按钮,TextView等等。

问题是,例如Game Over屏幕有一个背景,那么应该有一个“You win”或“You lose”的图像,在背景之上,从左上角开始的特定偏移。 如果我为480x800手机设计接口,并以像素为单位指定偏移量,一切都可以。但是,如果我将它部署到320x480手机中,它当然不适合,因为现在像素偏移不同,背景也会缩放。

使用倾角装置无济于事,因为较小的手机也有较小的屏幕。

这是我想做的草图。所有它应该在240x320到540x960的手机上看起来相似。是否有可能在单个XML布局文件中以某种方式执行此操作,或者我是否必须为我想到的每个分辨率手动编码偏移量?

主要问题是,在图片上,“你赢了”周围的红框是一个适合橙色背景的地方,因为这就是图形的设计方式。当应用程序在较小分辨率的手机上运行时,我并不完全知道如何将橙色的“你赢”图片对齐。 enter image description here

3 个答案:

答案 0 :(得分:1)

从提供的PSD为不同的屏幕尺寸布局创建不同尺寸的图像,并为不同的屏幕尺寸创建不同的布局xml文件,在不同的布局文件中,您可以提供适合布局的图像参考。

为了获得更好的评价,您应该here以及this

答案 1 :(得分:1)

@Axarydax如果您希望您的应用程序支持不同的屏幕尺寸,您将设计它们。 我遇到过同样的问题 将图像放置在drawable-hdpi中用于高密度设备,在drawable-ldpi中用于低密度设备,在drawable-mdpi中用于中密度设备然后

我做了什么,我创建了三个不同的布局文件夹 喜欢320x480 布局文件夹

屏幕尺寸为240x320

布局端口-320×240

屏幕尺寸为480x800

布局端口-480×800

并创建具有相同名称的相应布局 一旦你完成了所有的编译 android会自动选择相应的布局 因为我创建了分辨率的模拟器,然后根据我的要求调整了布局

答案 2 :(得分:1)

我通过获取屏幕尺寸偏移来管理多分辨率。

DisplayMetrics displaymetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
        height = displaymetrics.heightPixels;
        width = displaymetrics.widthPixels;

        getDensityName(displaymetrics.density);

        int dens=displaymetrics.densityDpi;
        double wi=(double)width;
        double hi=(double)height;
        double x = Math.pow(wi,2);
        double y = Math.pow(hi,2);
        double screenInches = Math.sqrt(x+y)/(double)dens;

        if(screenInches<3.7)
        {
            offset = 0.7f;  
        }
        else if(screenInches<4.2)
        {
            offset = 1.1f;
        }
        else if(screenInches<5.0)
        {
            offset = 1.5f;
        }
        else if(screenInches<6.0)
        {
            offset = 1.7f;
        }
        else
        {
            offset = 2f;
        }

我希望这可以帮助别人。谢谢!