Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Layout ファイルののメンテナンス
Search
jsugai
June 19, 2017
Technology
540
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Layout ファイルののメンテナンス
Umeda.apk #3 の登壇資料
jsugai
June 19, 2017
More Decks by jsugai
See All by jsugai
OsakaMixLeap #11 LT "Star Trek" and "Software development" are similar
jsugai
0
410
SOUZOUxMERCARI-A Story of Cute Birds and Oldman
jsugai
0
670
Swift <-> Kotlin
jsugai
0
490
Prepare for Android 8.0/GDG-Kobe 2017-09-18
jsugai
0
83
Hashtag
jsugai
1
640
Ho Chi Minh.apk
jsugai
0
53
Umeda.apk 報告会資料
jsugai
1
570
Other Decks in Technology
See All in Technology
How to Design Configuration for Rails Applications
willnet
2
1.2k
Let's Change Our World—Again
snoozer05
PRO
6
660
CSS2026:OWS研究会・招待講演「世界観を、実装する」
atsush1_sada
2
280
dbt Semantic Layerで進めるenechainのデータ民主化
akizhou
1
250
書き手が人でもAIでも正しくなる道、SREを埋め込んだDeveloper Platform / tech drivers day8
chmikata
4
610
Vue.jsのGitHubから学ぶ意思決定
yut0naga1_fa
1
130
撮るだけでは終わらない。ソニーが挑むB2Bカメラソリューション開発
sony
0
110
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
130
Kiro Crewで「みのるん式」仕事術やってみた
minorun365
PRO
3
1.1k
「私が一番顧客に詳しい」を捨てる~ 全員が一次情報に精通する開発チームをつくり、PMが次のボトルネックへ染み出すまで
kaminashi
3
2.3k
企画を Software Factory-ready にする——開発が高速になったとき、PdMの仕事はどう変わったか
yachibit
1
250
AIをリアル世界に解き放つ 〜M5Stack×AIであなたのアイディアを手の平に〜
hamadakoji
1
450
Featured
See All Featured
Done Done
chrislema
187
17k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Crafting Experiences
bethany
1
390
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
330
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
440
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
530
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
Documentation Writing (for coders)
carmenintech
77
5.6k
Technical Leadership for Architectural Decision Making
baasie
3
610
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
Transcript
Layout.xml ͷϝϯς umeda.apk #3 - Report from Google I/O 2017
ϨΠΞτۤख
Α͋͘Δ ͜ΜͳϨΠΞτ Google Home $150
ͬͱใྔ͕ཉ͍͠
Google Home $150 50 205 22
Google Home $150 50 205 22 Google Pixel XL $600
1 8 7 Google Home $122 14 87 6 Google Home $89
ૉʹϨΠΞτ
1. LinerLayout ᶄ 2. ImageView 4. TextView 5. TextView 3.
LinerLayout Google Home $150 50 205 22 ᶄ ᶅ ᶆ 6. ImageView + TextView 7. ImageView + TextView 8. ImageView + TextView
None
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/list_height" android:layout_marginTop="@dimen/small_padding_size" android:orientation="horizontal">
<ImageView android:layout_width="@dimen/list_height" android:layout_height="@dimen/list_height" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="@dimen/text_paddng_right" tools:ignore="RtlSymmetry"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" android:textStyle="bold" tools:text="Selected Item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" tools:text="$200000" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingStart="@dimen/small_padding_size" android:paddingTop="@dimen/small_padding_size"> <ImageView android:layout_width="@dimen/small_icon_size" android:layout_height="@dimen/small_icon_size" android:src="@drawable/ic_comment_black_24dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> <ImageView android:layout_width="@dimen/small_icon_size" android:layout_height="@dimen/small_icon_size" android:src="@drawable/ic_thumb_up_black_24dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> <ImageView android:layout_width="@dimen/small_icon_size" android:layout_height="@dimen/small_icon_size" android:src="@drawable/ic_favorite_black_24dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> </LinearLayout> </LinearLayout> </LinearLayout> ͗͢ -JOF
Θ͔Γʹ͗͘͢ ϝϯςͨ͘͠ͳ͍
ରࡦ·ͱΊͯ͘
5&95 ImageView TextView 5&95 TextView:drawableStart TextView:text TextView ViewGroup(LinearLayout/RelativeLayout/etc...)
`make money` Ϙλϯ App Icon & Folder ྫ
None
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/list_height" android:layout_marginTop="@dimen/small_padding_size" android:orientation="horizontal">
<ImageView android:layout_width="@dimen/list_height" android:layout_height="@dimen/list_height" android:src="@mipmap/ic_launcher" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="@dimen/text_paddng_right" tools:ignore="RtlSymmetry"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="24sp" tools:text="Selected Item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" tools:text="$200000" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingStart="@dimen/small_padding_size" android:paddingTop="@dimen/small_padding_size"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="@dimen/text_paddng_left" android:paddingEnd="@dimen/text_paddng_right" android:drawableStart="@drawable/ic_comment_black_24dp" tools:text="item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="@dimen/text_paddng_left" android:paddingEnd="@dimen/text_paddng_right" android:drawableStart="@drawable/ic_thumb_up_black_24dp" tools:text="item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingStart="@dimen/text_paddng_left" android:paddingEnd="@dimen/text_paddng_right" android:drawableStart="@drawable/ic_favorite_black_24dp" tools:text="item" /> </LinearLayout> </LinearLayout> </LinearLayout> -JOF
ରࡦೖΕࢠΛݮΒ͢
https://github.com/google/flexbox-layout ʮapp:flexWrap="wrap"ʯ ͜Ε͚ͩͰ͑͗͢Δ PercentRelativeLayͭͷ͜ͱΕΖ
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/list_height" android:layout_marginTop="@dimen/small_padding_size"
android:orientation="horizontal"> <ImageView android:layout_width="@dimen/list_height" android:layout_height="@dimen/list_height" android:src="@mipmap/ic_launcher" /> <com.google.android.flexbox.FlexboxLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingStart="@dimen/text_paddng_right" app:flexWrap="wrap"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="24sp" android:textStyle="bold" tools:text="Selected Item" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textSize="20sp" tools:text="$200000" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableStart="@drawable/ic_comment_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableStart="@drawable/ic_thumb_up_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableStart="@drawable/ic_favorite_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" tools:text="item" /> </com.google.android.flexbox.FlexboxLayout> </LinearLayout> -JOF ʢωετΛݸݮʣ
ConstraintLayout
https://developer.android.com/topic/libraries/support-library/revisions.html
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http:// schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="@dimen/list_height"
android:layout_marginTop="@dimen/small_padding_size" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="80dp" android:layout_height="80dp" android:src="@mipmap/ic_launcher" tools:layout_editor_absoluteY="0dp" android:layout_marginLeft="8dp" app:layout_constraintLeft_toLeftOf="parent" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:textSize="24sp" android:textStyle="bold" app:layout_constraintLeft_toRightOf="@+id/imageView" tools:layout_editor_absoluteY="0dp" tools:text="Selected Item" /> <TextView android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:textSize="20sp" app:layout_constraintLeft_toRightOf="@+id/imageView" tools:layout_editor_absoluteY="28dp" tools:text="$200000" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:drawableStart="@drawable/ic_comment_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" app:layout_constraintLeft_toRightOf="@+id/imageView" tools:layout_editor_absoluteY="56dp" tools:text="item" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:drawableStart="@drawable/ic_thumb_up_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" app:layout_constraintLeft_toRightOf="@+id/textView" tools:layout_editor_absoluteY="56dp" tools:text="item" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:drawableStart="@drawable/ic_favorite_black_24dp" android:paddingEnd="@dimen/text_paddng_right" android:paddingStart="@dimen/text_paddng_left" app:layout_constraintLeft_toRightOf="@+id/textView2" tools:layout_editor_absoluteY="56dp" tools:text="item" /> </android.support.constraint.ConstraintLayout> -JOF ͰωετҰ൪গͳ͍
$POTUSBJOU6*Ͱ ௐ͕Ͱ͖ΔΜͰ 7JFXͷ Ұ൪গͳ͍Ͱ͢
ରࡦ ൃΛม͑ͯ ϨΠΞτॻ͔ͳ͍
-JUIP
None
<!-- activity_main.xml--> EOF XML <!-- fragment_main.xml--> EOF <!-- recycler_item.xml--> EOF
@LayoutSpec public class ListItemSpec { @OnCreateLayout static ComponentLayout onCreateLayout(
ComponentContext c, @Prop String name, @Prop String price, @Prop(optional = true) Drawable photo) { final ComponentLayout column = Column.create(c) .marginDip(YogaEdge.LEFT, 16) .child( Text.create(c) .text(name) .textSizeSp(24) ) .child( Text.create(c) .text(price) .textSizeSp(16) ) .child( Row.create(c) .marginDip(YogaEdge.TOP,4) .child( Image.create(c) .drawableRes(R.drawable.ic_comment) .withLayout() .marginDip(YogaEdge.RIGHT,4) .heightDip(20) .widthDip(20) ) .child( Text.create(c) .text("700") .textSizeSp(14) ) .child( Image.create(c) .drawableRes(R.drawable.ic_thumb_up) .withLayout() .marginDip(YogaEdge.RIGHT,4) ... ... ... ALL Programming
ͷൣғશମͰ7JFX͕ݸ
1SPT$POT
Pros • ϨΠΞτ͕γϯϓϧʢ͔ͯҰݸʣ • ׳ΕͨΒॻ͖͍͢ • એݴతʹॻ͚Δ • Fresco ͱ૬ੑ͕ྑ͍
• ϨΠΞτ Flexbox CSSతͳߟ͑ํ
Cons • ॻ͖͑Δͷ͕େม • αϯϓϧ௨Γʹॻ͍ͯಈ͔ͳ͍Օॴུ͕ • Ankoͷํ͕ͱ͖͍ͬͭ͢ • Fresco Λ࢝Ί
FB OSSനԡ͠ͷTutorial • ͪΐͬͱಠಛͳۭؾ Yoga FB͕ͩผͷϥΠϒϥϦ (Glide ͱ͔ Picasso ͷํ͕)
-JUIPͲ͏Α ݁ : Litho ͏ͳΒAnko Ͱ͍͍