我是android的初学者。我正在创建一个动态生成大部分内容的应用程序。当我设置任何内容的大小(以像素为单位)时,它在我的设备上看起来很好(我正在测试)但是当我在其他设备上运行时(由于不同的dpi),它的大小不会保持不变。 如何在dp中设置内容的大小,使其自身调整为静态创建的内容?
示例 - 在我的设备上,我将某个按钮的大小设置为50像素。 如何设置大小以使其相应调整大小? 提前谢谢。
答案 0 :(得分:0)
Here是您需要的答案。
简而言之,请使用:
/// Converts 14 dip into its equivalent px
Resources r = getResources();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics());
答案 1 :(得分:0)
您需要添加一个实用程序函数,用于将dp转换为像素。
public static int pxFromDp(final Context context, final float dp) {
return (int)(dp * context.getResources().getDisplayMetrics().density);
}
答案 2 :(得分:0)
您需要使用显示比例因子将其从dps转换为px。
final float scale = getContext().getResources().getDisplayMetrics().density;
int pixels = (int) (dps * scale + 0.5f);
然后动态设置像素值。
这个公式也在android文档中给出,如需进一步阅读,请查看以下链接:
https://developer.android.com/guide/practices/screens_support.html#screen-independence