ASとか

開発系の記事が多めです。タイトルのASはActionScriptの略です。

dpとspについて

はじめに

意識して使い分けている自信はあったけど説明しろと言われると割と困ったので調べました。

参考

各単位

  • dp
    • 画面密度(解像度)に応じて変化する抽象的な単位
    • 必ずしも正比例するわけではない
    • "dip"、"dp"どちらでもOK
  • sp
    • dpと同じく画面密度に応じて変化する
    • ユーザが設定したフォントサイズも反映される。よってフォントサイズ指定にはこの単位を使用するべき
    • しかし私はデバイスで文字サイズ設定するやり方がわからない

単位をresで指定する場合

例)res/values/dimens.xml
<?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>
javaからのアクセス
Resources res = getResources();
// floatで欲しい場合
float fontSize = res.getDimension(R.dimen.font_size);
// intで欲しい場合
int fontSize = res.getDimensionPixelSize(R.dimen.font_size);
xmlからのアクセス
<TextView  
    android:layout_height="@dimen/textview_height"  
    android:layout_width="@dimen/textview_width"  
    android:textSize="@dimen/sixteen_sp" />