在教学app中会有尺子的出现,我们如何获取标准的刻度呢
实现的关键是:
1.获取设备屏幕的信息
2.根据参数绘制尺子
3.设定尺子的相关动作
第一步的关键是DisplayMetrics,它的介绍是A structure describing general information about a display, such as its size, density, and font scaling.
和getWindowManager().getDefaultDisplay().getMetrics();它的介绍是Gets display metrics that describe the size and density of this display.
我们通过
dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
将屏幕信息传入到dm结构体中,再将dm作为传参给我们的RulerView类
构造方法:
public RulerView(Context context, DisplayMetrics dm) {
super(context);
find_pixal(dm);
ruler_length = 6 * xcm; // 设置一开始为6厘米的尺子
ruler_width = xcm;
mid_point.set((float) (ruler_length * 0.5), 0);
rect = new Rect(0, 0, (int) (ruler_length), (int) ruler_width);
}
protected void find_pixal(DisplayMetrics dm) {
xcm = (float) (dm.xdpi / 2.54); // 单位都是pixal
xmm = xcm / 10;
}
其实实际上应该是要用上x和y一起计算的,不过基本所有设备x和y上的dpi都是一样的,所以我们只用xdpi就好了
声明F