android – 如何在onDraw()方法中定义像素独立高度

android – 如何在onDraw()方法中定义像素独立高度,第1张

概述我扩展了View以构建自定义小部件.我想用独立的像素单位定义小部件的高度. 我认为可以通过将像素密度乘以所需的高度来完成,但我不知道该怎么做. 到目前为止我所拥有的(最小化): public class Timeline extends View { @Override protected void onDraw(Canvas canvas) { //super 我扩展了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;
总结

以上是内存溢出为你收集整理的android – 如何在onDraw()方法中定义像素独立高度全部内容,希望文章能够帮你解决android – 如何在onDraw()方法中定义像素独立高度所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1138461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存