我扩展了View以构建自定义小部件.我想用独立的像素单位定义小部件的高度.
我认为可以通过将像素密度乘以所需的高度来完成,但我不知道该怎么做.
我认为可以通过将像素密度乘以所需的高度来完成,但我不知道该怎么做.
到目前为止我所拥有的(最小化):
public class Timeline extends View { @Override protected void onDraw(Canvas canvas) { //super.onDraw(canvas); int canvasWidth = canvas.getWidth(); this.widgetWith = canvasWidth; this.setBackgroundGradientNoVideo(); RectF rect = new RectF(); rect.set(0,canvasWidth,50); //Dessin d'un rectangle de fond canvas.drawRoundRect(rect,10,this.paint); } @Override protected void onMeasure(int widthMeasureSpec,int heightMeasureSpec) { // TODO Auto-generated method stub //super.onMeasure(widthMeasureSpec,50); this.setMeasuredDimension(widthMeasureSpec,50); this.widgetWith = MeasureSpec.getSize(widthMeasureSpec); } }
所以我想换行
this.setMeasuredDimension(widthMeasureSpec,50);
和
rect.set(0,50);
对像素独立的东西.
谢谢
解决方法
将您的像素值乘以getResources().getDisplayMetrics().density以使像素密度无关.如果您绘制文本,则可能需要使用scaledDensity.
mdpi密度= 1,hdpi为1.5,ldpi为0.75我相信.
要完成答案,请参考以下内容:
在处理视图或图像时使用以下内容
int px = getResources().getDisplayMetrics().density * dp;
或者,在处理文本时:
int px = getResources().getDisplayMetrics().scaledDensity * sp;