作者neko0624 (Neko)
看板AndroidDev
标题[问题] canvas取得宽高问题
时间Tue Jun 7 16:13:52 2011
开发层: (应用/框架/库/核心)
APP
问题:
请问我想在手机萤幕上画图 且适用於不同萤幕尺寸的手机
所以我想先取得每支手机的Canvas宽高
我的context view里的onDraw方法如下:
public void onDraw(Canvas canvas)
{
String TAG= "MY";
int h= canvas.getHeight();
int w= canvas.getWidth();
int d= canvas.getDensity();
Log.v(TAG, "高\t"+ h);
Log.v(TAG, "宽\t"+ w);
Log.v(TAG, "Density\t"+ d);
}
然後我在DDMS中找TAG的讯息 显示的是:
高 533
宽 320
Density 160
我用的手机是HTC Desire 解析度应该是800x480
为什麽显示的只有533x320呢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.240.176.185
1F:→ demisoda:canvas和手机萤幕的大小好像是不同的东西 06/07 16:49
2F:→ neko0624:可是我的Canvas不就是Activity的Context吗 06/07 18:09
3F:→ neko0624:我的Activity在萤幕上显示 Canvas不能代表萤幕解析度吗 06/07 18:10
4F:→ ericinttu:canvas应该是当前画布可用大小. 06/07 20:22
5F:→ ericinttu:萤幕解析度再扣掉status bar, title bar, 就会是canvas 06/07 20:23
6F:→ ericinttu:的大小. 06/07 20:23
7F:→ ericinttu:要不然, 就写指令把activity变成全萤幕. 06/07 20:23
8F:→ neko0624:那我想在canvas上画bitmap使得宽或高缩放至到萤幕边缘 06/07 20:50
9F:→ neko0624:是不是该先侦测我的canvas最大可以到多大 06/07 20:51
11F:推 chrisho:画布(canvas)也可以10x10啊, 还是取手机萤幕大小吧 06/07 21:35
12F:推 laiis:用 onSizeChanged() 呢? 06/07 23:08
13F:→ neko0624:感谢各位 我在onSizeChange里getHeight,getWidth 06/07 23:51
14F:→ neko0624:得到的height=483, width=320 好像被缩小的感觉 06/07 23:51
15F:→ neko0624:如果我想取得canvas在view里的最大宽高 该怎麽get呢? 06/07 23:54
16F:推 ericinttu:get? set? create? 06/08 00:07
17F:→ mamaya3:Display d = getWindowManager().getDefaultDisplay(); 06/08 00:10
18F:→ mamaya3:int width = d.getWidth(); 06/08 00:11
19F:→ mamaya3:int height = d.getHeight(); 06/08 00:11
20F:→ mamaya3:这个如何? 06/08 00:11
21F:→ mamaya3:不知道有没例外状况.. 06/08 00:18
22F:→ neko0624:楼上大大的方法试了一下显示的还是533x320 06/08 09:48
23F:→ neko0624:为什麽总是被缩小1.5倍 ="= 06/08 09:49
24F:→ Cinfinite:Display d = ((WindowManager)context.getSystemService 06/08 11:16
25F:→ Cinfinite:("window")).getDefaultDisplay(); 06/08 11:16
26F:→ Cinfinite:我是都这样写,试试看吧 =) 06/08 11:17
27F:→ mamaya3:Density传回150比较合理 传回160就真的很诡异了XD 06/08 14:06
28F:→ neko0624:Cinfinite大大的看不懂... 06/08 23:46
29F:→ neko0624:另外Density究竟是甚麽概念呢?不能单纯以pixel为单位吗 06/08 23:47