ハッシュタグ

デザイナーが             ##aaaaddeessiiggnnss

コードから読み解く、
AAnnddrrooiiddアプリの
デザインの幅を広げるコツと
TTiippss
                 第44回:レイアウト編
                            @@GGMMOO  YYoouurrss
                            22001122..1100..2255
ハッシュタグ

                   ##aaaaddeessiiggnnss
           デザイン   開発
70

60

50

40

30

20

10

 0
     Web           アプリ
ハッシュタグ

                                       ##aaaaddeessiiggnnss




aassaammiieeeeee77   ttoommmmmmmmyy   aaddaammrroocckkeerr
ハッシュタグ

            ##aaaaddeessiiggnnss


  がんばって作ったデザインが、
実装後に残念な結果にならないために
秋葉ちひろ
•・ @@ttoommmmmmmmyy
•・ デザイナー/アートディレクター
•・ WWeebb系・アプリ系
•・ BBaaiidduuでSSiimmeejjiiの開発のフロント
  エンドの一部
http://y-anz-m.blogspot.jp/2012/10/androidseekbar.html
今日のアジェンダ


レイアウト編
11.. よく使うレイアウト
22.. 単位と余白
33.. PPSSやFFWWでデザイン案を作るとき
     の33箇条
デザイナー向�け
レイアウト入�門
レイアウト編

11..  よく使うレイアウト
wwrraapp__ccoonntteenntt
                         インライン要素っぽい


ffiillll__ppaarreenntt//mmaattcchh__ppaarreenntt

                          ブロック要素っぽい
4488ddpp
android:layout_width="fill_parent"

android:layout_height="wrap_content"
TTeexxttVViieeww




IImmaaggeeVViieeww




TTeexxttVViieeww
<TextView   />
<TextView   />   TTeexxttVViieeww

<TextView   />
<TextView   />
                 IImmaaggeeVViieeww
<ImageView />
<ImageView />

<TextView />     TTeexxttVViieeww
11..  よく使うレイアウト

LLiinneeaarrLLaayyoouutt
<TextView   />
<TextView   />   TTeexxttVViieeww

<TextView   />
<TextView   />
                 IImmaaggeeVViieeww
<ImageView />
<ImageView />

<TextView />     TTeexxttVViieeww
<LinearLayout>
  <TextView   />
  <TextView   />   TTeexxttVViieeww

  <TextView   />
  <TextView   />
                   IImmaaggeeVViieeww
  <ImageView />
  <ImageView />

  <TextView />     TTeexxttVViieeww

</LinearLayout>
<LinearLayout>     たてにならべー!

  <TextView   />
                       TTeexxttVViieeww
  <TextView   />
                       TTeexxttVViieeww
  <TextView   />
  <TextView   />       TTeexxttVViieeww

                       TTeexxttVViieeww
  <ImageView />        IImmaaggeeVViieeww
  <ImageView />        IImmaaggeeVViieeww

                       TTeexxttVViieeww
  <TextView />
</LinearLayout>
<LinearLayout>     よこにならべー!

  <TextView   />
                       TTeexxttVViieeww
  <TextView   />
                       TTeexxttVViieeww
  <TextView   />
  <TextView   />       TTeexxttVViieeww

                       TTeexxttVViieeww
  <ImageView />        IImmaaggeeVViieeww
  <ImageView />        IImmaaggeeVViieeww

                       TTeexxttVViieeww
  <TextView />
</LinearLayout>
<LinearLayout>                             よこにならべー!

      <TextView                />
      <TextView                />
      <TextView                />
      <TextView                />
TTeexxttVViieeww TTeexxttVViieeww TTeexxttVViieeww TTeexxttVViieeww IImmaaggeeVViieeww
      <ImageView />                                         (入�り切らない)
      <ImageView />

      <TextView />
</LinearLayout>
name   id          time

img


                  text
よこにならべー!


      name   id          time

img


                  text
よこにならべー!          たてにならべー!

      name   id              time

img


                   text
よこにならべー!          たてにならべー!

      name   id              time

img


                    text




                  よこにならべー!
<LinearLayout>
</LinearLayout>
<LinearLayout>

   <ImageView />

   <LinearLayout>
   </LinearLayout>

</LinearLayout>
<LinearLayout>

   <ImageView />

   <LinearLayout>




   </LinearLayout>
</LinearLayout>
<LinearLayout>

   <ImageView />

   <LinearLayout>
       <LinearLayout>




       </LinearLayout>

        <TextView />

   </LinearLayout>
</LinearLayout>
<LinearLayout>

   <ImageView />

   <LinearLayout>
       <LinearLayout>

           <TextView />
           <TextView />
           <TextView />

       </LinearLayout>

        <TextView />

   </LinearLayout>
</LinearLayout>
!   LLiinneeaarrLLaayyoouuttの
    難点

 構造が複雑で、階層が深い
       ↓
数が多いと、重い原因となる
よこにならべー!



name     id       time
よこにならべー!



name      id                    time


android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
たてにならべー!
                    actionbar




                     toolbar

android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="0dp"
よこにならべー!



    cancel                OK

       11                  11
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
よこにならべー!



cancel                   OK

  11     layout_weight   22
LLiinneeaarrLLaayyoouuttの
     得意なこと

•・ 等分割や、割合を指定した分割が得意
•・ 使わないスペースを最大限に伸ばすこ
 とが得意
11..  よく使うレイアウト

RReellaattiivveeLLaayyoouutt
name   id          time

img


                  text
ぼく親だよー


      name   id          time

img


                  text
ぼく親だよー       ぼく親の右どなりAAのだよー


      name   id               time

img


                   text
ぼく親だよー       ぼく親の右どなりAAのだよー

                  ぼくAAの右どなりのBBだよー
      name   id                     time

img


                      text
ぼく親だよー        ぼく親の右どなりAAのだよー

                   ぼくAAの右どなりのBBだよー
       name   id                     time

 img


                       text




ぼくAAの下でAAと左端が同じなCCだよー
ぼく親だよー        ぼく親の右どなりAAのだよー

                   ぼくAAの右どなりのBBだよー
       name   id                     time

 img


                       text




ぼくAAの下でAAと左端が同じなCCだよー

              ぼくCCの上でCCと右端が同じなDDだよー
ぼく親だよー      android:id="@+id/Oya"

ぼく親の右どなりAAのだよー
     android:layout_toRightOf="@id/
     Oya"
ぼくAAの右どなりのBBだよー
     android:layout_toRightOf="@id/A"
ぼくAAの下でAAと左端が同じなCCだよー
     android:layout_below="@id/A"
     android:layout_alignLeft="@id/A"

ぼくCCの上でCCと右端が同じなDDだよー
     android:layout_above="@id/C"
     android:layout_alignRight="@id/C"
RReellaattiivveeLLaayyoouutt


              name      id            time

img


                               text
<RelativeLayout>
                    RReellaattiivveeLLaayyoouutt
  <ImageView />
                                  name      id
  <TextView   />    img

  <TextView   />
  <TextView   />
  <TextView   />

</RelativeLayout>
<LinearLayout>

   <ImageView />

   <LinearLayout>
        <LinearLayout>

            <TextView />
            <TextView />
            <TextView />

        </LinearLayout>

      <TextView />

   </LinearLayout>
</LinearLayout>
RReellaattiivveeLLaayyoouuttの
         得意なこと

•・ LLiinneeaarrLLaayyoouuttだと階層が深くなって
 しまうところを、軽々と11階層で表現
 できる!
11..  よく使うレイアウト

FFrraammeeLLaayyoouutt
 重ねるときに使おう
TTeexxttVViieeww

           sshhaappee


IImmaaggeeVViieeww



                        android:layout_width=
                                  "fill_parent"
                        android:layout_height=
                                  "fill_parent"
ssttaarrttCCoolloorr   ##88000000


 eennddCCoolloorr      ##00000000
<ScrollView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"   >
</ScrollView>
<ScrollView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"   >


   要素はひとつだけ
</ScrollView>
<HorizontalScrollView
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"   >
</HorizontalScrollView>
レイアウト編

22..  単位と余白
AAnnddrrooiiddアプリの
               レイアウトで使う単位


                  ddpp                                                       sspp
DDeennssiittyy--iinnddeeppeennddeenntt  PPiixxeellss       SSccaallee--iinnddeeppeennddeenntt  PPiixxeellss




               http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
22..  単位と余白

ddppについて
116600ddppii   11   224400ddppii   11..55




 332200ppxx         448800ppxx


448800ppxx
                    880000ppxx
116600ddppii   11   224400ddppii   11..55




 332200ppxx         448800ppxx
 332200ddpp         332200ddpp
448800ppxx
                    880000ppxx
116600ddppii 224400ddppii 332200ddppii
  mmddppii     hhddppii     xxhhddppii

    11          11..55         22


  11ddpp       11ddpp        11ddpp
  11ppxx      11..55ppxx     22ppxx
224400ddppii   332200ddppii
  hhddppii      xxhhddppii

  11..55           22


  11ddpp         11ddpp
 11..55ppxx      22ppxx
22..  単位と余白

ssppについて
22

     11..77
     22..00
     22..33
     22..66


         http://y-anz-m.blogspot.jp/2012/02/
         androidtextview-settextsize-sp.html
116600ddppii 224400ddppii 332200ddppii
  mmddppii     hhddppii     xxhhddppii

    11          11..55         22


  11sspp       11sspp        11sspp
  11ppxx      11..55ppxx     22ppxx
224400ddppii   332200ddppii
  hhddppii      xxhhddppii

  11..55           22


  11sspp         11sspp
 11..55ppxx      22ppxx
2222sspp
1144sspp




1188sspp
重要なのは…�

   ddpp//ssppを意識すること

                  ddpp                                                       sspp
DDeennssiittyy--iinnddeeppeennddeenntt  PPiixxeellss       SSccaallee--iinnddeeppeennddeenntt  PPiixxeellss




               http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
http://developer.android.com/design/style/metrics-grids.html
http://developer.android.com/design/style/metrics-grids.html
http://developer.android.com/design/style/metrics-grids.html
http://developer.android.com/design/style/typography.html
22..  単位と余白

実際にどう作るか
  考えてみる
http://developer.android.com/design/style/metrics-grids.html
http://developer.android.com/design/style/metrics-grids.html
332200ddpp       336600ddpp


    553333ddpp
                      664400ddpp

     hhddppii             xxhhddppii
11ddpp   11..55ppxx    11ddpp      22ppxx
http://developer.android.com/design/downloads/index.html




                                                           336600ppxx
xxhhddppii   772200ppxx   336600ddpp   4488ddpp

                                       4488ddpp
                                       9966ppxx
xxhhddppii

               1122ddpp 2244ppxx


                                      88ddpp 1166ppxx
1166ddpp
 3322ppxx      1122ddpp

                           1122ddpp
xxhhddppii
             2244ppxx
             1122sspp

             1188sspp
             3322ppxx
             1144sspp
             2288ppxx
<RelativeLayout
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"

    android:layout_marginLeft="16dp"
    android:layout_marginRight="16dp"

    android:paddingTop="12dp"

    android:paddingBottom="12dp">
      <ImageView
	       android:layout_width="48dp"
	       android:layout_height="48dp"

	       android:layout_marginRight="   12dp"
	       android:src="@drawable/photo"
	       android:id="@+id/photoarea" />
      <TextView
	       android:layout_width="wrap_content"
	       android:layout_height="wrap_content"

	       android:textSize="   18sp"
	       android:textColor="#fff"
	       android:layout_toRightOf="@id/photoarea"
	      android:text="Adamrocker"
	       android:id="@+id/titlearea" />
      <TextView
	       android:layout_width="wrap_content"
	       android:layout_height="wrap_content"
PPhhoottoosshhoopp   GGaallaaxxyy  NNeexxuuss  で実装
336600ddpp                  332200ddpp

GGaallaaxxyy  NNeexxuuss  で実装   HHTTCC  DDeessiirree  で実装
レイアウト編:まとめ

PPSSやFFWWでデザインを作る
       ときの33箇条
1.
サイズは(ほぼ)22種類!
ddppやssppを意識する
伸縮できるところを意識する
332200ddpp       336600ddpp


    553333ddpp
                      664400ddpp

     hhddppii             xxhhddppii
11ddpp   11..55ppxx    11ddpp      22ppxx
2.
xxhhddppiiの余白は44の倍数の
ddppだとベスト!
hhddppiiになっても整数になる
224400ddppii   332200ddppii
  hhddppii      xxhhddppii

  11..55           22
xxddppii       xxhhddppii
11..55 : 22   =   の余白        :   の余白
xxddppii       xxhhddppii
11..55 : 22        =          の余白        :   の余白



                                         11..5533
  xxddppii       xxhhddppii
  の余白        =   の余白          ×
                 44の倍数
                                          22 44
3.
作ったあとは、実機で確認
(要ものさし)
何mmmmになるのかを実際にチェック
AAnnddrrooiidd  DDeessiiggnn  PPrreevviieeww




                       http://code.google.com/p/android-ui-utils/
デザイナーにも広めたい
と思ってはじめた勉強会
ありがとうございました!


GGoooodd  LLuucckk!!
•・ @@ttoommmmmmmmyy
•・ ffaacceebbooookk  ::  秋葉ちひろ
•・ 次回は1111//88(木)総集編
  @@GGooooggllee

  hhttttpp::////ggoooo..ggll//iiLLBBppoo

【第4回】デザイナーがコードから読み解く、Androidアプリのデザインの幅を広げるコツとTips