2018-03-19 图片处理(七)----自定义画板(注意)

笔记如下

遇见了这样的问题:

Video_2018-03-19_110210.gif



为什么偏移呢?
布局文件里

    

在mainActivity文件里

bitmap = Bitmap.createBitmap((int) (200), (int) (200), Bitmap.Config.ARGB_8888);

这里就要了解一下什么是dp单位

每英寸包含的像素点的数量为240/1.5=160dpi(横向)或320/2=160dpi(纵向),160dpi就是这部手机的像素密度,像素密度的单位dpi是Dots Per Inch的缩写,即每英寸像素数量。

Android系统定义了四种像素密度:低(120dpi)、中(160dpi)、高(240dpi)和超高(320dpi),它们对应的dp到px的系数分别为0.75、1、1.5和2,这个系数乘以dp长度就是像素数。

例如界面上有一个长度为“80dp”的图片,那么它在240dpi的手机上实际显示为80x1.5=120px,在320dpi的手机上实际显示为80x2=160px。


现在知道问题在哪里了

layout文件中的200dp实际上是存在200×1.5=300个像素,实际上是300×300像素,但是我们在定义"画板"的时候指定的宽高是200×200像素,所以我现在的操作是将200×200像素的图片,放到300×300像素上,因此将200×200"拉长"成300*300,所以感觉偏移了



解决方法:

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);

        float density = metrics.density;//获得对应的dp到px的系数
        System.out.println(density);

        //先准备我们的画板
        bitmap = Bitmap.createBitmap((int) (200*density), (int) (200*density), Bitmap.Config.ARGB_8888);

你可能感兴趣的:(2018-03-19 图片处理(七)----自定义画板(注意))