我正在开发一个Android应用程序,当然我有很多课程在屏幕上显示视图。现在我在这里有一个简单的方法DpToPx(int),我在stackOverflow的其他地方看到过:
private int dpToPx(int dp){
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
}
我使用它来提供跨不同屏幕分辨率设备的某种布局一致性。哪种做法更好 -
要在每个放置视图的类中使用此方法,还是将其作为所有类实现的接口?
特别是在内存和对象保留方面(AFAIK有时最好在跨类重复相同的方法而不是单独的对象)。但是当它超过两个班级时?
答案 0 :(得分:0)
我可能会这样做:
实用程序类中的静态实用程序方法,您的视图会将A
传递给,或
视图实例化的实用程序类的实例方法
E.g。
context
或
class LayoutUtils {
public static int dpToPx(Context context, int dp){
DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
}
}
在后一种情况下,每个视图都有一个class LayoutUtils {
private Context context;
LayoutUtils(context context) {
this.context = context;
}
public int dpToPx(int dp){
DisplayMetrics displayMetrics = this.context.getResources().getDisplayMetrics();
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);
}
}
实例。
实例方法更易于模拟测试(当然,您需要调整上面的内容,以添加依赖注入而不是直接构造函数)。
答案 1 :(得分:0)
我创建了一个类" Utils"在包装内"帮手"在那里,我把我认为将在所有应用程序中使用的所有方法和变量。
然后它就像Utils.dpToPx(10)一样简单地调用; 不要忘记导入课程:)
这是我的方式,我不知道它是否是最好的。
一些代码
public class Utils {
public static int dp2px(int dp, Context context) { return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, context.getResources().getDisplayMetrics()); }
}