【android】drawableなリソースを<shape>で定義する
ボタンなどビューの背景に簡単な図形(まる、しかくetc...)を適用したい場合、XMLによって画像を定義することができる。
どんな図形を定義できるか、設定できる値、項目などは公式ページで詳しくまとめられている。
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
以下のコードは公式ページからの引用
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners android:radius="integer" android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient android:angle="integer" android:centerX="integer" android:centerY="integer" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size android:width="integer" android:height="integer" /> <solid android:color="color" /> <stroke android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
- shape
親となる要素。ここで図形の種類を定義する。rectangle,oval,line,ringの4つから選べるようだ。
- courners
図形の角の丸みを調節できる。android:radius="integer"とすると全ての角。他は各角に対応している。line,oval,ringで指定するとどうなるか不明。(確認できしだい追記)
- gradient
グラデーションを指定する。書きにくいので割愛。
- padding
適用するビューとのpaddingを指定する。そのままのタグですね。
- size
図形の大きさを指定する。
普通は図形を適用するビューの大きさに合わさるので無視される。
ここを指定するのは図形をImageViewのように直接使いたい場合だけか。
- solid
図形の色を指定する。
- stroke
枠線を指定する。
android:width="integer"は線の太さ。colorは色。
android:dashWidth="integer"は点線の太さ。
android:dashGap="integer"は点線の間隔。
画像を必要としないのでサイズを減らすことができる。あと噂では画像よりも処理が速いだとか。
下記のサイトは実行画面と一緒にいろいろなサンプルを紹介されている。綺麗だ。
http://narazoro.hatenablog.com/entry/20110710/1310273042