繁体   English   中英

android中的自定义视图在每个设备中看起来都不同

[英]Custom view in android is looking different in every devices

我在android中开发自定义视图。 我想在视图中显示路径。 所有这些都是硬编码的。

  private void loadData(){
                float density = getResources().getDisplayMetrics().density;
                testPath = new Path();
                testPath.moveTo(new Point((int) (242*density), (int) (213*density)));
                testPath.lineTo(new Point((int) (214*density), (int) (209*density)));
                testPath.lineTo(new Point((int) (131*density), (int) (243*density)));
                testPath.lineTo(new Point((int) (96*density), (int) (314*density)));
                testPath.lineTo(new Point((int) (117*density), (int) (403*density)));
                testPath.lineTo(new Point((int) (194*density), (int) (457*density)));
 }


@Override
protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);{
        canvas.drawLine(0,200,canvas.getWidth(),200,drawPaint);
        canvas.drawLine(0,canvas.getHeight()/2,canvas.getWidth(),canvas.getHeight()/2,drawPaint);
        canvas.drawLine(canvas.getWidth()/2,0,canvas.getWidth()/2,canvas.getHeight(),drawPaint);
        canvas.drawPath(testPath, drawPaint);
} 

但是在xxhdpi中,屏幕低于基线(中线)。 而在mpdpi中,它高于基线。 如果我不将像素点与像素相乘,则xxhdpidevices中的路径太小。 这是mdpi设备图像。 在此处输入图片说明 这是xxhdpi设备 在此处输入图片说明

问题陈述:如果假设在1280x720(16:9)设备上有一个点表示P(10,20),那么在480x854设备(或任何分辨率为16:9的设备)上应该是什么点

解:

public int getGeneralizedValueX(int x) {
    return (int) (AppConstants.CANVAS_WIDTH * (x / 1280f));
}

public int getGeneralizedValueY(int y) {
    return (int) (AppConstants.CANVAS_HEIGHT * (y / 720f));
}

注意:以上公式在CANVAS_WIDTH和CANVAS_HEIGHT的恒定比率上适用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM