我想在xamarin.android的C# 代码中将 dp 转换为 px ,但我能找到的只是android studio 中的java 代码,这些代码在xamarin 中有一些问题。我尝试使用等价物,例如使用 Resources 而不是 getResources(),我可以解决一些小问题,但是有一些问题我找不到任何等价物。以下是 xamarin 中的原始代码、我的代码和我的代码问题:
第一个代码
(从Programatically set height on LayoutParams as density-independent pixels 中找到)
爪哇代码
int height = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, getResources().getDisplayMetrics());
C# 代码
int height = (int)TypedValue.ApplyDimension(TypedValue.COMPLEX_UNIT_DIP, < HEIGHT >, Resources.DisplayMetrics);
问题:
“TypedValue”不包含“COMPLEX_UNIT_DIP”的定义
无效的表达式术语 <(> 的相同错误)
当前上下文中不存在名称“HEIGHT”
第二个代码
(从公式 px 到 dp,dp 到 px android 中找到)
爪哇代码
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
C# 代码
DisplayMetrics displayMetrics = Application.Context.Resources.DisplayMetrics;
int pixel = Math.Round(dp * (displayMetrics.Xdpi / DisplayMetrics.DensityDefault));
问题
- 运算符“/”不能应用于“float”和“DisplayMetricsDensity”类型的操作数
现在我实际上有两个问题。哪个代码更合适?xamarin.android 中它们的等效代码是什么?
提前致谢。