作者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