SlideShare uma empresa Scribd logo
1 de 45
XAMLで学ぶ
    レイアウトスキル

     グレープシティ株式会社
            ⼋ 巻 雄哉
         blog: d.hatena.ne.jp/Yamaki/
                  Twitter: @yamaki00
アジェンダ
 なぜ今レイアウトスキル?
 業務  ア プ リ 画 ⾯ に おける
                  レイアウトの現状
 レ イ ア ウ ト ⽅ 式 は ⼤ き く 分 け て 2つ
 XAMLを例に相対配置を学ぶ
   配置する要素
   配置される領域

 サンプルで 学 ぶ 実 際の 使 い ⽅
 XAML以外のUIフレームワーク

                                   2
XAMLで学ぶレイアウトスキル

なぜ今レイアウトスキル?

                  3
なぜ今レイアウトスキルなのか?
画   ⾯ 解像 度 の 多 様 化
  液晶ディスプレイの低価格化、ワイド化
  ノートPCの普及(3台中2台がノート?)

  PC以外のデバイスの登場
      スマートフォン、タブレットPC/スレートPC

 国際化
⾼   DPI
画 ⾯ 解像 度 の 多 様 化
2006年7⽉           その他
                                             Yuya Yamaki’s blog
                                   http://d.hatena.ne.jp/Yamaki/
                               訪問 者 に お け る 画 ⾯ 解像 度 の 内 訳
     1680x1050

    1400x1050




                              1280x1024 ,
         1600x1200
                                41.08%



                 1024x768 ,
                  29.55%
画 ⾯ 解像 度 の 多 様 化

2011年7⽉
                                              Yuya Yamaki’s blog
                                  http://d.hatena.ne.jp/Yamaki/
                                  訪問 者 に お け る 画 ⾯ 解像 度 の 内 訳


           1600x900      その他

    1600x1200
                               1280x1024 ,
     1440x900
                                 28.08%

     1366x768

                                 1920x1080
   1024x768 ,
     6.57%

             1920x1200
1280x800                         1680x1050
画 ⾯ 解像度⽐ 較
    解像度⽐




      1024×768


          1280×1024
                      1920×1080
画 ⾯ の向 き




           8
これじゃちょっとカッコ悪い




                9
Windows 8




            10
Windows 8




            11
XAMLで学ぶレイアウトスキル

業務ア プ リ 画 ⾯ に お け る
              レイアウトの現状
                         12
業務アプリケーションの現状
    ウィンドウサイズの固定
768ピクセル




                     最 ⼤化 / 最 ⼩ 化
                     ボ タ ン は ⾮ 表⽰



          1024ピクセル
固定サイズ(リサイズしない)
固定サイズ(リサイズしない)
 リサイズできないようにする

 Windowsフォームの場合
  this.MaximizeBox = false;
  this.FormBorderStyle = FormBorderStyle.FixedSingle;




                                                        14
絶対配置のリサイズ対応
 リサイズ時に各コントロールの
            位 置 、 ⼤ き さ を 動 的 に 調整
 VB6
     フォームのリサイズイベントでコントロール
      の 位置 や ⼤ きさ を 変 更
 Windowsフォーム
     Anchorプロパティ、Dockプロパティ



                                     15
XAMLで学ぶレイアウトスキル
レ イ ア ウ ト ⽅ 式 は ⼤ きく 分 け て 2つ


                                16
絶対配置と相対配置
 絶対配置
     位 置 や ⼤ き さ が 直 接 指 定 されて決まる
 相対配置(動的配置)
     周りの要素とそれらとの関係で
              位置 や ⼤ きさ が 決 まる


さ ま ざ ま な 画 ⾯ 解像 度 に 対応 す る た め に は 、

                   を 採 ⽤ す る 必 要が あ る

                                        17
相対配置におけるリサイズへの対応
相対配置におけるリサイズへの対応
            相対配置であること

          リサイズに対応している

 モダンなUIフレームワークは
                        相対配置が基本
    XAML(WPF、Silverlight、Windows Phone 7)、
     Adobe Flex、Android


                                         18
XAMLで学ぶレイアウトスキル

XAMLを例に相対配置を学ぶ

                  19
配置する要素と配置される領域
    配置する要素                   配置される領域




     が持つ属性                      が持つ属性
VerticalAlignment:Center   4⾏ 5列のGrid
Margin:10                  2⾏ 2列 ⽬ の 領域 の ⼤ き さ
MaxWidth:200               配置要素に合わせて可変


                                                  20
配置する要素
 最終的な位置(X座標、Y座標)と
⼤ きさ ( 幅 、 ⾼ さ ) の 決 定 に
影響する3つの属性
 ① VerticalAlignmentプロパティ、
   HorizontalAlignmentプロパティ
 ② Marginプロパティ
 ③ コ ン ト ロ ー ル ⾃ ⾝ の ⼤ きさ




                              21
※参考資料
 VerticalAlignmentプロパティ
    Top、Center、Bottom、Stretch
 HorizontalAlignmentプロパティ
    Left、Center、Right、Stretch
 Marginプロパティ
    Thickness構造体
      Left、Top、Right、Bottom




                                 22
※参考資料
 Widthプロパティ、Heightプロパティ
    ピクセル、Auto(Double.Nan)
 MaxWidthプロパティ、MinWidthプロパ
 ティ、MaxHeightプロパティ、MinHeight
 プロパティ
    ピクセル、Double.PositiveInfinity




                                    23
配置される領域
 Grid
     列と ⾏ で 構 成 さ れ る
                格 ⼦ 状 の 領域 を 定 義 して 配置
 StackPanel
     ⽔ 平 ⽅ 向 ま た は 垂 直 ⽅ 向 に 並 べ て 配置
 WrapPanel
   基本的な動きはStackPanel
   領域の端まで⾏ っ た 場 合 に 折 り 返して 表⽰




                                         24
※参考資料
 Grid
     ColumnDefinitionsプロパティ(列を定義)
       ColumnDefinitionクラス
            Widthプロパティ(列幅を指定)
     RowDefinitionsプ ロ パ テ ィ ( ⾏ を 定 義 )
       RowDefinitionクラス
            Heightプ ロ パ テ ィ ( ⾏ の ⾼ さ を 指 定 )

     Width、Height共にGridLength型
※参考資料
 GridLength構造体
    3つのモード(GridUnitTypeプロパティ)
      Auto    配置された要素に必要なサイズ
      Pixel   ピクセルで指定する絶対値
      Star    全 体 の ⼤ き さ に 対す る ⽐ 率




                                        26
※参考資料
 配置要素に対する添付プロパティ
    Column
      Grid内   の ど の 列 に 表⽰ す る か ( ゼ ロ オ リ ジ ン )
    ColumnSpan
      Grid内   の い く つ の 列 に ま た が っ て 表⽰ す る か
    Row
      Grid内   の ど の ⾏ に 表⽰ す る か ( ゼ ロ オ リ ジ ン )
    RowSpan
      Grid内   の い く つ の ⾏ に ま た が っ て 表⽰ す る か
※参考資料
 GridSplitter
     ShowsPreviewプロパティ
       ドロップ時に実際のサイズを変更するかどうか

 以下のプロパティはWPFのみ
  ( こ れ ら の プ ロ パ テ ィ が な く て も ⽀障は ほ と ん ど な い )
     ResizeDirectionプロパティ
       Auto、Columns、Rows

     ResizeBehaviorプロパティ
       BasedOnAlignment、CurrentAndNext、
       PreviousAndCurrent、PreviousAndNext


                                                    28
※参考資料
 StackPanel
     Orientationプロパティ
      ⼦   要素 が 配置 さ れ る ⽅ 向 ( ⽔ 平 か 垂 直 )


⼦    要素 の VerticalAlignmentプロパティ
     OrientationがVerticalの時は無効
⼦    要素 の HorizontalAlignmentプロパティ
     OrientationがHorizontalの時は無効
※参考資料
 WrapPanel(WPFのみ)
    Orientationプロパティ
     ⼦   要素 が 配置 さ れ る ⽅ 向 ( ⽔ 平 か 垂 直 )
    ItemWidthプロパティ
      1⼦   要素 の 配置 領域 の 幅
    ItemHeightプロパティ
      1⼦   要素 の 配置 領域 の ⾼ さ
XAMLで学ぶレイアウトスキル

サ ン プ ル で 学 ぶ 実 際の 使 い ⽅

                           31
32
33
34
WrapPanel


Auto   GridSplitter




                           35
なぜ階層化する必要があるのか
⽬       的 や 役 割 ごとに
              領域をパネルとして分けたい
      ⼀ 般的 に 、 リ サ イ ズ 処 理 は 領域 単 位 で 異 な る
      耐変更性に優れている




                                               36
37
「1 Star」から
「Auto」に変更    「Auto」から
             「1 Star」に変更



                           38
XAMLで学ぶレイアウトスキル

XAML以外のUIフレームワーク


                   39
⽐ 較表①
Windowsフォーム   XAML                  Adobe Flex             Android

Anchor、Dock   HorizontalAlignment   (スタイル)                 (コンテナ側)
                                    left、right、            gravity
                                    horizontalCenter
Anchor、Dock   VerticalAlignment     (スタイル)                 (コンテナ側)
                                    top、bottom、            gravity、
                                    verticalCenter         baselineAligned
Margin        Margin                 (コンテナ側)               layout_marginBottom、
                                    paddingBottom、         layout_marginBottom、
                                    paddingLeft、           layout_marginBottom、
                                    paddingRight、          layout_marginBottom
                                    paddingTop
Width         Width                 width、percentWidth     layout_width

Height        Height                height、percentHeight   layout_height

MaximumSize   MaxWidth、MaxHeight    maxWidth、maxHeight     maxWidth、maxHeight

MinimumSize   MinWidth、MinHeight    minWidth、minHeight     minWidth、minHeight




               ※ Adobe FlexとAndroidに関してはドキュメントで確認した
                 程度の情報のため、かなりあやしいです。ご注意ください。
⽐ 較表②
Windowsフォーム XAML                    Adobe Flex     Android

                                  絶対配置
デフォルト              Canvas           Canvas         AbsoluteLayout
                                                   ( ⾮ 推 奨)

                                  相対配置

FlowLayoutPanel    StackPanel       Box            LinearLayout
TableLayoutPanel   Grid             Grid           TableLayout
SplitterPanel      GridSplitter     HDividedBox、   -
                                    VDividedBox
FlowLayoutPanel    WrapPanel        Tile           -
Dockプロパティ          DockPanel        -              -
                   -                   -           RelativeLayout
                       ※ Adobe FlexとAndroidに関してはドキュメントで確認した
                         程度の情報のため、かなりあやしいです。ご注意ください。
Windowsフォーム 2.0から追加
 FlowLayoutPanel、TableLayoutPanel、
 SplitterPanel
   機能的には、モダンなレイアウトシステムに
    ⽐ べ て そ れ ほ ど 遜⾊ が な い
   デザイナー以外で
          レイアウトを変更できないことが問題



 相対レイアウトの場合、
                 階層化は避けられない
                                      42
階層化で重要となるのが
 UIをテキスト(XAML)として
     編集できること
 デザイナー+ ドキュメントアウトライン
  である程度のことは可能だが…
 特に可視化されない領域への配置が困難




                    43
※参考資料
 今回紹介していないレイアウト機能
    UniformGrid(WPFのみ)
  DockPanel
  Expanderコントロール

  ViewBox
  LayoutTransform
45

Mais conteúdo relacionado

Semelhante a 第6回中心会議 XAMLで学ぶ レイアウトスキル 0923

レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】Yasuhito Yabe
 
DevIO Auto Layout 道場スライド
DevIO Auto Layout 道場スライドDevIO Auto Layout 道場スライド
DevIO Auto Layout 道場スライドkakegawa-atsushi
 
マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向Yuki Anzai
 
CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介Narihira Takuya
 
第8回rest勉強会 bootstrap編
第8回rest勉強会 bootstrap編第8回rest勉強会 bootstrap編
第8回rest勉強会 bootstrap編ksimoji
 
React+redux+saga 01
React+redux+saga 01React+redux+saga 01
React+redux+saga 01TIS Inc
 
IGORpro_basic_japanese_ver.1.0
IGORpro_basic_japanese_ver.1.0IGORpro_basic_japanese_ver.1.0
IGORpro_basic_japanese_ver.1.0Satoshi Kume
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスKentaro Yoshida
 
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法rie nabesaka
 
HTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲームHTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲームTakumi Ohashi
 
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能youten (ようてん)
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesHironori Washizaki
 
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能youten (ようてん)
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックスTomoharu ASAMI
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実Takumi Ohashi
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 

Semelhante a 第6回中心会議 XAMLで学ぶ レイアウトスキル 0923 (20)

レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】レスポンシブWebデザイン【発展編】
レスポンシブWebデザイン【発展編】
 
DevIO Auto Layout 道場スライド
DevIO Auto Layout 道場スライドDevIO Auto Layout 道場スライド
DevIO Auto Layout 道場スライド
 
マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向マルチスクリーン対応と最近のアプリの傾向
マルチスクリーン対応と最近のアプリの傾向
 
CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介CVPR 2011 ImageNet Challenge 文献紹介
CVPR 2011 ImageNet Challenge 文献紹介
 
Html5で9parts
Html5で9partsHtml5で9parts
Html5で9parts
 
XAML&Application Platform ~これまでとこれから~
XAML&Application Platform ~これまでとこれから~XAML&Application Platform ~これまでとこれから~
XAML&Application Platform ~これまでとこれから~
 
iOS6 Auto Layout
iOS6 Auto LayoutiOS6 Auto Layout
iOS6 Auto Layout
 
第8回rest勉強会 bootstrap編
第8回rest勉強会 bootstrap編第8回rest勉強会 bootstrap編
第8回rest勉強会 bootstrap編
 
React+redux+saga 01
React+redux+saga 01React+redux+saga 01
React+redux+saga 01
 
IGORpro_basic_japanese_ver.1.0
IGORpro_basic_japanese_ver.1.0IGORpro_basic_japanese_ver.1.0
IGORpro_basic_japanese_ver.1.0
 
Hivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービスHivemallで始める不動産価格推定サービス
Hivemallで始める不動産価格推定サービス
 
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
さらに一歩踏み込んだCSS3の使い方!コツとポイントを理解して 楽しくサイトを彩る方法
 
HTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲームHTML5で作るスマホブラウザゲーム
HTML5で作るスマホブラウザゲーム
 
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
(デ部発表用抜粋版)プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
Cedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principlesCedec2012 ai-contest-design-patterns-principles
Cedec2012 ai-contest-design-patterns-principles
 
Linuxにおける開発環境
Linuxにおける開発環境Linuxにおける開発環境
Linuxにおける開発環境
 
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
プログラマとデザイナが共有すべきUIに関するAndroidの10の機能
 
Scalaプログラミング・マニアックス
Scalaプログラミング・マニアックスScalaプログラミング・マニアックス
Scalaプログラミング・マニアックス
 
HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実HTML5でスマートフォン開発の理想と現実
HTML5でスマートフォン開発の理想と現実
 
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 

第6回中心会議 XAMLで学ぶ レイアウトスキル 0923