Ich entwickle benutzerdefinierte Ansicht in Android. Ich möchte den Pfad in der Ansicht anzeigen. Alle Punkte sind so hart codiert.Benutzerdefinierte Ansicht in Android sieht anders aus in jedem Gerät
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);
}
Aber in xxhdpi Bildschirm kommt unter die Basislinie (Mittellinie). während In der mpdpi es über die Grundlinie kommt. Wenn ich keine Punkte mit demisty Pixel multipliziere, dann ist der Pfad in xxhdpidevices zu klein. Hier ist mdpi Gerät Bild. Hier ist xxhdpi Gerät
Ihr OnDraw wahr ist i nicht nehmen n Berücksichtigung der Bildschirmdichte – Blackbelt
so wie Bildschirm gleich in jeder Art von Gerät zu machen? Ich versuche, Punkte mit Dichte-Pixel zu multiplizieren, aber es kommt nicht richtig –