缩放ImageButtons以适应各种屏幕尺寸

时间:2016-03-16 15:21:29

标签: java android scale dpi

对于my app(运行Android 2.1及更高版本), 我想知道如何根据dpi缩放各种屏幕尺寸的按钮(在这种情况下是虚拟仿真器),因为我的缩放背景图像似乎是“未混合”完全正常...我缩放了我的按钮(“GOT IT”如图所示相应地,例如,lpdi和xxhdpi屏幕,我得到以下结果:

对于Nexus 5虚拟仿真器(xxhdpi),假设按150X34像素的按钮似乎导航到ldpi资源控制器:

enter image description here

放大QVGA(ldpi),按钮为57X13像素:

enter image description here

所有这些都说,我是否需要缩小布局而不是考虑到我在可绘制文件夹(xhdpi,hdpi,mdpi和ldpi)中实现缩放按钮图像,在可绘制资源文件中调用它,然后将drawable资源文件设置为ImageButton的背景图像?这是我的按钮btw的XML:

<ImageButton
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:adjustViewBounds="true"
    android:id="@+id/exitBtn"
    android:layout_marginBottom="57dp"
    android:src="@drawable/popup_btn"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:scaleType="centerCrop"
    android:background="@android:color/transparent" />

P.S。缩放可绘制文件夹xhdpi是xxhdpi屏幕的默认位置吗? xxxhdpi及以上版本怎么样?

3 个答案:

答案 0 :(得分:0)

首先,您必须更改按钮才能占据整个屏幕:

<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/exitBtn"
android:layout_marginBottom="52dp" <-- You may keep the margin if you like
android:background="@drawable/popup_btn"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />

接下来,您将需要为您支持的不同密度包含不同的资源:mdpi,xhpdi,xxhdpi等。请确保每个分辨率都合适并避免使用相同的图像,太大的文件会占用内存和处理能力,文件分辨率太小会看起来像素化。

编辑:有关支持不同设备和屏幕密度的更多信息: http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)

为了兼容具有不同屏幕尺寸的布局,您应该使用 res / 目录下的尺寸来获得布局兼容性,例如,您可以为不同的屏幕尺寸定义不同的尺寸,另请参阅{ {3}}和Providing Resources

答案 2 :(得分:0)

通过实例化来创建显示指标。现在从显示指标中检索整个根视图的宽度和高度

完成后,在您的活动的Oncreate中实现globallayoutchangelistener,并将缩放代码放在侦听器中。

想法是首先计算设备密度,然后根据globallayoutchangelistener中的密度缩放按钮

让我知道它是否有效。