После создания рисунка ниже я заметил, что по некоторым причинам некоторые черные линии появляются слабо, тогда как некоторые из них хорошо видны. Какой код можно использовать для обеспечения того, чтобы ширина черных линий между серыми ящиками составляла ровно 1dp, а ширина красных прямоугольников - ровно 5dp?Линии, кажущиеся слабыми на холсте
public class RectangleTextView extends View {
private final Paint mBackPaint = new Paint();
private final Paint mRedPaint = new Paint();
private int mSideRectWidth = 10;
public RectangleTextView(Context context, AttributeSet attrs) {
super(context, attrs);
mBackPaint.setColor(Color.BLACK);
mRedPaint.setColor(Color.RED);
}
@Override protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (getWidth() == 0)
return;
//draw grey boxes
setBackgroundColor(Color.parseColor("#808080"));
int boxWidth = getWidth()/7;
//draw black line
for (int i = 0; i < 7; i++) {
canvas.drawLine(mSideRectWidth + boxWidth * i, 0, mSideRectWidth + boxWidth * i, getHeight(), mBackPaint);
}
//draw left end rectangle
canvas.drawRect(0, 0, mSideRectWidth, getHeight(), mRedPaint);
//draw right end rectangle
canvas.drawRect(getWidth() - mSideRectWidth, 0, getWidth(), getHeight(), mRedPaint);
}
}
'... чтобы ширина черных линий между серыми ящиками составляла ровно 1dp, а ширина красных прямоугольников точно равна 5dp? Возможно, вы путаетесь в ** px ** и * * дп **. Методы 'drawXYZ()' объекта холста работают в ** px **, в то время как вам нужно ** dp **, для независимости плотности. –
Итак, в зависимости от вашей плотности тока вы должны преобразовать желаемые ** dp ** s в ** px ** s, чтобы позволить методам 'drawXYZ()' использовать правильные значения. –
'mBackPaint.setStrokeWidth (2f);' –