Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在onDraw()方法中定义独立于像素的高度

如何在onDraw()方法中定义独立于像素的高度
EN

Stack Overflow用户
提问于 2011-08-11 15:18:10
回答 2查看 5.8K关注 0票数 7

我有扩展视图,以建立一个自定义的小工具。我想用一个独立的像素单位来定义小部件的高度。我认为可以通过将像素密度乘以期望的高度来实现,但我不知道如何做到这一点。

到目前为止我所拥有的(最小化):

代码语言:javascript
运行
AI代码解释
复制
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, 0, canvasWidth, 50);
        //Dessin d'un rectangle de fond
        canvas.drawRoundRect(rect, 10, 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);
    }
}

所以我想换一下台词

代码语言:javascript
运行
AI代码解释
复制
this.setMeasuredDimension(widthMeasureSpec, 50);

代码语言:javascript
运行
AI代码解释
复制
rect.set(0, 0, canvasWidth, 50);

一些与像素无关的东西。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-11 15:21:26

将像素值与getResources().getDisplayMetrics().density相乘,以使像素与密度无关。如果绘制文本,您可能希望改用scaledDensity。

我相信mdpi上的density =1,hdpi上的1.5,ldpi上的0.75。

要完成的答案,需要一些源代码:

在处理视图或图像时,请使用以下内容

代码语言:javascript
运行
AI代码解释
复制
int px = getResources().getDisplayMetrics().density * dp;  

或者,在处理文本时:

代码语言:javascript
运行
AI代码解释
复制
int px = getResources().getDisplayMetrics().scaledDensity * sp;
票数 17
EN

Stack Overflow用户

发布于 2011-08-11 15:22:53

要从dp值中获取px值,请计算

代码语言:javascript
运行
AI代码解释
复制
int px = getResources().getDisplayMetrics().density * dp;

我建议在某个地方放置一个静态方法,它接受dp值作为参数,以便用更少的代码来完成这项工作。例如,我创建了一个"ResolutionHelper“类,它在应用启动时用正确的密度值初始化,并且有一个静态方法"dipToPx(int dip)”,然后可以从任何地方使用它。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7028433

复制
相关文章
Android 自定义View中的onMeasure onLayout onDraw
Android自定义View时常重写三个方法onMeasure和onLayout以及onDraw。
码客说
2019/10/22
2.6K0
如何在Vue组件中定义方法
在上述示例中,使用 methods 选项来定义了两个方法:methodName 和 anotherMethod。你可以根据需要添加任意数量的方法。
王小婷
2023/09/13
5900
如何在onCreate中获取View的高度和宽度
在开发过程中经常需要获取到View的宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。然而新手们经常在onCreate方法中直接调用上面两个方法得到的值是0!
阳仔
2019/07/31
5.6K0
javascript中各种计算位置高度的方法
网页可见区域宽: document.body.clientWidth; 网页可见区域高: document.body.clientHeight; 网页可见区域宽: document.body.offsetWidth (包括边线的宽); 网页可见区域高: document.body.offsetHeight (包括边线的高宽); 网页正文全文宽: document.body.scrollWidth; 网页正文全文高: document.body.scrollHeight; 网页被卷去的高: document.body.scrollTop; 网页被卷去的左: document.body.scrollLeft; 网页正文部分上: window.screenTop; 网页正文部分左: window.screenLeft; 屏幕分辨率的高: window.screen.height; 屏幕分辨率的宽: window.screen.width; 屏幕可用工作区高度: window.screen.availHeight; 屏幕可用工作区宽度:window.screen.availWidth; scrollHeight: 获取对象的滚动高度。 scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离 scrollWidth:获取对象的滚动宽度 offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度 offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置 event.clientX 相对文档的水平座标 event.clientY 相对文档的垂直座标 event.offsetX 相对容器的水平坐标 event.offsetY 相对容器的垂直坐标 document.documentElement.scrollTop 垂直方向滚动的值 event.clientX+document.documentElement.scrollTop 相对文档的水平座标+垂直方向滚动的量
用户5640963
2019/07/26
1.7K0
如何在 JavaScript 中创建自定义排序方法
一般情况咱们排序大都按数字或字母顺序,但也有一些情况下,咱们可能需要自定义排序顺序。
前端小智@大迁世界
2020/05/12
3.4K0
如何在 JavaScript 中创建自定义排序方法
如何在C中定义多行宏定义?
请参阅下面的示例,其中我将交换两个变量的值。 do-while(0)结构很不错 #include <stdio.h> #define swap(x,y,T) do { \ T temp = (*x);\ (*x) = (*y); \ (*y) = temp; \ } while (0) int main(void) { int a = 5; int b = 9; printf("Value of a and b before swaping\n"
用户4645519
2020/09/08
2.7K0
如何在C中定义多行宏定义?
如何在python中定义有序字典
0x00 前言 最近遇到一个大坑,在测一个程序的时候。程序接受的数据是json,但是要求json是有序的(吐槽一样,要求有序的用json干屁啊!) 当我用python构造字典的时候,总会给我排序,用json.dumps转化为json后。导致程序解析失败。所以,在此研究了一下如何构造有序的json。 0x01 解决 网上查了一下,用到了python中有序字典OrderdDict,在collections库中。 在默认情况下: >>> d= {} >>> d["2"]=2 >>> d["1"]=1 >>> d[
WeaponX
2018/07/11
1.8K0
CSDN自定义模块的高度定制
在只允许使用html,不能使用js和css的情况下,也能把CSDN的自定义模块玩出花来
拿我格子衫来
2022/01/24
5810
CSDN自定义模块的高度定制
ondraw() 和dispatchdraw()的区别
    View组件的绘制会调用draw(Canvas canvas)方法,draw过程中主要是先画Drawable背景,对 drawable调用setBounds()然后是draw(Canvas c)方法.有点注意的是背景drawable的实际大小会影响view组件的大小,drawable的实际大小通过getIntrinsicWidth()和getIntrinsicHeight()获取,当背景比较大时view组件大小等于背景drawable的大小      画完背景后,draw过程会调用onDraw(Canvas canvas)方法,然后就是dispatchDraw(Canvas canvas)方法, dispatchDraw()主要是分发给子组件进行绘制,我们通常定制组件的时候重写的是onDraw()方法。值得注意的是ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw()方法, 而绕过了draw()方法,当它有背景的时候就调用draw()方法,而draw()方法里包含了dispatchDraw()方法的调用。因此要在ViewGroup上绘制东西的时候往往重写的是dispatchDraw()方法而不是onDraw()方法,或者自定制一个Drawable,重写它的draw(Canvas c)和 getIntrinsicWidth(),  getIntrinsicHeight()方法,然后设为背景。
张拭心 shixinzhang
2022/05/06
3860
在线图片像素低怎么处理 改善低像素图片的方法
有时候我们收到的图片很糊,完全不是高清像素的。那么有些小伙伴是不是直接把图片删除了或者就将就用呢?其实这种情况还是有办法把图片得像素提高的。想要知道在线图片像素低怎么处理的小伙伴看过来了。
用户8715145
2022/03/25
3K0
自定义控件:数独游戏(一)
主要学习内容: 1、图形编程 2、自定义View类 3、FontMmetrics 4、单击触摸事件 5、碰撞检测 6、可用数据计算 图形编程基本概念: 1、颜色对象 Color 安卓系统中的颜色的表示方法 (1)、int color = Color.blue; //纯色 (2)、int color = Color.argb(188,255,255,255);//自定义颜色 (3)、在xml文件当中定义颜色 2、画笔对象 Paint 该类的对象用于控制画笔的风格和颜色等方面的信息 (1)、paint.setC
听着music睡
2018/05/18
1.1K0
Python中定义集合的方法【大全】
Python集合又是一种新的数据类型,集合有两种形式:可变集合set()和不可变集合frozenset()两种,这两种集合操作方法比较类似,但是在底层性质上有截然想法的区别。集合是一种无序的,不重复且不可随机访问的元素集合,在概念和运算上和数学中的集合类似,集合分为可变和不可变两种。
python自学网
2021/12/04
2.1K1
Python中定义集合的方法【大全】
Power BI图表新高度:像素与矢量图形组合
什么是像素图形?手机、相机拍摄的照片都属于像素图形,像素图形的特点是每个像素都包含一个颜色,细节丰富,随着图形放大,会越来越模糊。常见的图片格式jpg、png、gif都是基于像素。
wujunmin
2023/09/05
2930
Power BI图表新高度:像素与矢量图形组合
smarty 模板中定义变量的方法
{assign var="i" value=0} {foreach name=simple_tab from=$zhinan_cate key=key item=item} {if $i} <small>|</small> {/if} {if $item['count']} {math assign="i" equation="x + y" x=$i y=1} <span><a title="{$segment_parent}期{$it
零式的天空
2022/03/02
1.8K0
自定义控件:数独游戏(二)
  老师视频教程结束了,但是游戏并未完成。下面便开始自己动手完善部分功能   需要完善的功能:   1、设置给定的数独数据数字不可改变   2、设置给定的数独数据数字和玩家填入的数字颜色不同,方便区分   3、判断填写后的数独是否符合数独游戏规则     4、数字选择兑对话框添加清除和取消按钮,并每次选择时显示所有的数字(原来思路是只显示符合规则的数字,这样当出现错误之后,后面的某些位置无法选择数字)   解决方法:   1、设置给定的数独数据数字不可改变  我的思路,因为初始化的数据数字是给定的,而数据是
听着music睡
2018/05/18
1.7K0
点击加载更多

相似问题

如何在Canvas onDraw方法中创建onDraw事件

13

如何在MFC中定义onDraw()

24

onDraw外的画布高度

11

如何在onDraw(Canvas canvas)方法中绘制已知宽度和高度的文本

10

自定义视图onDraw方法

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档