--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="textview_height">25dp</dimen>
<dimen name="textview_width">150dp</dimen>
<dimen name="ball_radius">30dp</dimen>
<dimen name="font_size">16sp</dimen>
</resources>
Resources res =getResources()
;
float fontSize = res.getDimension
(R.dimen.font_size);
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
あんざいです。
AndroidManifest.xml の anyDensity はチェックしましたか?
これが、false だと (この場合は)1.5 倍されますが、
true だとされないはずです。
true/false で同じように dump して、変わるかどうか確かめて
みたらいかがでしょうか?
こんばんは
あんざいです。
たぶん micco さんが勘違いしているんだと思います。
まず、WVGA と HVGA では単位長さあたりのピクセル数が異なります。
つまり、WVGA で 100px の長さと、HVGA での 100px の
物理的な長さ(ディスプレイ上に定規を当てて図った長さ)は
異なります。これがいわゆる解像度が違うということです。
anyDensity についてですが、
名前のとおり、これが true ということは、
any density = すべての解像度にコード側で(自分で)対応
するなり、layoutフォルダを画面サイズごとに用意するなり、
drawable フォルダを解像度ごとに用意するなりしていますよ
という意味です。
なので、Layoutparams や setTextSize などコードで指定した pixel size
がそのまま表示されます。setTextSize(10) は 10px で表示されます
つまり、解像度の高い端末の方が低い端末よりも小さく表示されます。
ただし、XMLの方で dp や sp で指定すると解像度が異なる端末でも
同じ表示になるはずです。
つまり、コード側で setTextSize(10) とした場合と、XMLで
android:textSize="10sp" とした場合の大きさは端末によって違います。
160 dpi の画面で 1 dp = 1 px なので、160 dpi の端末なら、
同じ大きさになるということです。
#setTextSize の引数は pixel です。
anyDensity = false というのは、そいういう対処をしていないので、
コード側で設定しているピクセル値を解像度に応じて調整してください
ということです。 この場合、コード側で setTextSize(10) とした場合と
XMLで android:textSize="10sp"とした場合の大きさは端末の
解像度によらず同じになります。
ただし、Xperia では anyDensity = false にすると、drawable-hdpi ではなく
drawable-mdpi に格納した画像が使われるという問題があります。
私は、
anyDensity = true にして、
XML側で sp や dp でサイズ指定し、コード側で指定しなければならない
場合は、 XMLで dimension を設定して、それを getDimension して
setTextSize などに渡しています。
> 一方で、android:anyDensity="true"に戻すと、やはり1.5倍の「24.0」が戻ってきます。
> このままsetTextSizeで設定すると、24spで表示されますので、XMLで同じリソースを取得して設定し
> ているTextViewとは異なる大きさとなります。
これの意味がよくわからないのですが、このままsetTextSize(24) とした場合
の意味は、
24sp で表示されるのではなく、24px で表示されるということですよ。16sp
を解像度調整して、
HVGA で16sp のサイズを WVGA だと 24px になるから、24が返ってきているん
です。
spの単位だと 16sp のままです。なので、XML で 24sp と指定した場合とサイ
ズがことなるのは
当たり前です。XMLで16sp と指定した場合と同じになるような処理だからです。
わかりにく説明でごめんなさい
うまく理解できるといいのですが。
あんざい
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。