Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
アンテナピクトをカスタマイズしてみよう
Search
umikaki
May 19, 2018
Programming
3
13k
アンテナピクトをカスタマイズしてみよう
2018/5/19開催 OSC名古屋2018で発表したスライドです。
umikaki
May 19, 2018
Tweet
Share
More Decks by umikaki
See All by umikaki
Tidy up my home LAN
umikaki5017
0
310
20190127_android_quick_settings
umikaki5017
0
370
Other Decks in Programming
See All in Programming
Outline View in SwiftUI
1024jp
1
330
Quine, Polyglot, 良いコード
qnighy
4
640
Kaigi on Rails 2024 〜運営の裏側〜
krpk1900
1
200
型付き API リクエストを実現するいくつかの手法とその選択 / Typed API Request
euxn23
8
2.2k
タクシーアプリ『GO』のリアルタイムデータ分析基盤における機械学習サービスの活用
mot_techtalk
4
1.4k
광고 소재 심사 과정에 AI를 도입하여 광고 서비스 생산성 향상시키기
kakao
PRO
0
170
CSC509 Lecture 12
javiergs
PRO
0
160
WebフロントエンドにおけるGraphQL(あるいはバックエンドのAPI)との向き合い方 / #241106_plk_frontend
izumin5210
4
1.4k
3 Effective Rules for Using Signals in Angular
manfredsteyer
PRO
0
110
NSOutlineView何もわからん:( 前編 / I Don't Understand About NSOutlineView :( Pt. 1
usagimaru
0
330
C++でシェーダを書く
fadis
6
4.1k
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.1k
Featured
See All Featured
For a Future-Friendly Web
brad_frost
175
9.4k
Agile that works and the tools we love
rasmusluckow
327
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
BBQ
matthewcrist
85
9.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
The World Runs on Bad Software
bkeepers
PRO
65
11k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Producing Creativity
orderedlist
PRO
341
39k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
329
21k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
Transcript
"OESPJEͷΞϯςφϐΫτΛ ΧελϚΠζͯ͠ΈΑ͏ ʢʣ ౦ւಓΒ͙-JOVYϥΠτχϯάτʔΫେձˏ͋ͻΔম͖߹ઓਧ্ͷਞ !VNJLBLJ ɹIUUQTNBTUPEPOUSBJOJOGP!VNJLBLJ
࣍ ɹࣗݾհ ɹΞϯςφϐΫτͬͯԿʁ ɹΞϯςφϐΫτΛΧελϚΠζ͢Δʹʁ ɹΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ɹࠓޙͷల ɹ·ͱΊ
ࣗݾհ ͏Έ͔͖ʢ!VNJLBLJʣ ๏ ͱ͋ΔձࣾͷϓϩάϥϚʔ ๏ ओʹϞόΠϧϓϥοτϑΥʔϜͷΞϓϦ։ൃͯ͠·͢ ๏ ࠷ۙ"OESPJEͦͷͷΛΧελϚΠζ͢Δ͜ͱʹϋϚΔ ๏ NBTUPEPOͷḉཱͯ·ͨ͠
IUUQTNBTUPEPOUSBJOJOGPˡࣗḉ
ΞϯςφϐΫτͬͯԿʁ
ΞϯςφϐΫτͬͯԿʁ ͲͷϝʔΧʔͷΞΠίϯͰ͠ΐ͏ʁ ΞϯςφϐΫτʜݱࡏͷଓిঢ়گΛදࣔ͢Δͷ
ΞϯςφϐΫτΛΧελϚΠζ͢Δʹʁ
ΞϯςφϐΫτΛΧελϚΠζ͢Δʹʁ طଘͷ30.ͷ4ZTUFN6*BQLΛٯίϯύΠϧ 0SFPҎ߱4ZTUFN6*BQL͕PEFYԽ͞Ε͓ͯΓɺ ٯίϯύΠϧ͕ࠔ ιʔείʔυΛมߋ͠Ϗϧυ Ϗϧυ͢ΔʹɺͦΕͳΓͷεϖοΫͷϚγϯ͕ඞཁ
˞Ϗϧυํ๏ʹ͍ͭͯɺ΄ͨࢯͷϒϩάΛࢀর ɹʢʮ"OESPJEϏϧυʯͰάάΕग़͖ͯ·͢ʜʣ
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ΞϯςφϐΫτͷॲཧ4ZTUFN6*ʹهࡌ ˞-JOFBHF04ͷιʔεɿIUUQTHJUIVCDPN-JOFBHF04BOESPJE@GSBNFXPSLT@CBTF ΞϯςφϐΫτͷΞΠίϯɿQBDLBHFT4ZTUFN6*SFTESBXBCMF ΞΠίϯͷஔɿQBDLBHFT4ZTUFN6*SFTMBZPVU ΞΠίϯͷදࣔॲཧɿQBDLBHFT4ZTUFN6*TSDDPNBOESPJETZTUFNVJTUBUVTCBS 4JHOBM$MVTUFS7JFXKBWB
QBDLBHFT4ZTUFN6*TSDDPNBOESPJETZTUFNVJTUBUVTCBS QPMJDZ.PCJMF4JHOBM$POUSPMMFSKBWB
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ௨৴छผΞΠίϯ QBDLBHFT4ZTUFN6*SFTESBXBCMFҎԼ ˡYΞΠίϯ ˡ(ΞΠίϯ ˡ(ΞΠίϯ ˡ(
ΞΠίϯ ˡ&ΞΠίϯ ˡ(ΞΠίϯ ˡ)ΞΠίϯ ˡ) ΞΠίϯ ˡ-5&ΞΠίϯ ˡ-5& ΞΠίϯ
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ֤ΞΠίϯ9.-ʢϕΫλʔը૾ʣͰهࡌ ‣ "OESPJE4UVEJPΛ༻͍ͯ47(͔Β9.-ʹม͢Δ ࢀߟɿ͞·͟·ͳີʹద༻ՄೳͳϕΫλʔάϥϑΟοΫͷՃc"OESPJE%FWFMPQFS ɹɹɹɹIUUQTEFWFMPQFSBOESPJEDPNTUVEJPXSJUFWFDUPSBTTFUTUVEJP IMKB
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ిڧΞΠίϯ+BWBͰ࣮͞Ε͍ͯΔʂʂ ‣ QBDLBHFT4ZTUFN6*TSDDPNBOESPJETZTUFNVJTUBUVTCBSQIPOF 4JHOBM%SBXBCMFKBWB վ͢Δͷࢸͷۀʂʂ
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ΞΠίϯͷஔ QBDLBHFT4ZTUFN6*SFTMBZPVUҎԼ ˢϞόΠϧճઢͷσʔλ௨৴ϐΫτͱΞϯςφϐΫτͷஔΛઃఆ ˢ8J'JϐΫτͱΞϯςφϐΫτͷஔΛઃఆ ˢTJHOBM@DMVTUFS@WJFXYNM ˣNPCJMF@TJHOBM@HSPVQYNM
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ <FrameLayout android:id="@+id/wifi_combo" android:layout_height="wrap_content" android:layout_width="wrap_content" > <com.android.systemui.statusbar.AlphaOptimizedImageView android:theme="?attr/lightIconTheme" android:id="@+id/wifi_signal" android:layout_height="wrap_content"
android:layout_width="wrap_content" /> <com.android.systemui.statusbar.AlphaOptimizedImageView android:theme="?attr/darkIconTheme" android:id="@+id/wifi_signal_dark" android:layout_height="wrap_content" android:layout_width="wrap_content" android:alpha="0.0" /> <ImageView android:id="@+id/wifi_inout" android:layout_height="wrap_content" android:layout_width="wrap_content" /> </FrameLayout> <!-- 〜〜(省略)〜〜 --> <LinearLayout android:id="@+id/mobile_signal_group" android:layout_height="wrap_content" android:layout_width="wrap_content" > </LinearLayout> <!-- 〜〜(省略)〜〜 --> </com.android.systemui.statusbar.SignalClusterView> <com.android.systemui.statusbar.SignalClusterView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/signal_cluster" android:layout_height="match_parent" android:layout_width="wrap_content" android:gravity="center_vertical" android:orientation="horizontal" android:paddingEnd="@dimen/signal_cluster_battery_padding" > <!-- 〜〜(省略)〜〜 --> <FrameLayout android:layout_height="17dp" android:layout_width="wrap_content"> <ImageView android:id="@+id/wifi_in" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_activity_down" android:visibility="gone" android:paddingEnd="2dp" /> <ImageView android:id="@+id/wifi_out" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_activity_up" android:paddingEnd="2dp" android:visibility="gone" /> </FrameLayout> TJHOBM@DMVTUFS@WJFXYNM 8J'J௨৴ঢ়گΞΠίϯ 8J'JిڧΞΠίϯ ϞόΠϧΞΠίϯ
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content"> <com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneLightTheme" android:id="@+id/mobile_signal" android:layout_height="wrap_content" android:layout_width="wrap_content" systemui:hasOverlappingRendering="false"
/> <com.android.systemui.statusbar.AnimatedImageView android:theme="@style/DualToneDarkTheme" android:id="@+id/mobile_signal_dark" android:layout_height="wrap_content" android:layout_width="wrap_content" android:alpha="0.0" systemui:hasOverlappingRendering="false" /> <ImageView android:id="@+id/mobile_type" android:layout_height="wrap_content" android:layout_width="wrap_content" /> <ImageView android:id="@+id/mobile_roaming" android:layout_width="wrap_content" android:layout_height="17dp" android:paddingStart="22dp" android:paddingTop="1.5dp" android:paddingBottom="3dp" android:scaleType="fitCenter" android:src="@drawable/stat_sys_roaming" android:contentDescription="@string/accessibility_data_connection_roaming" android:visibility="gone" /> </FrameLayout> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:systemui="http://schemas.android.com/apk/res-auto" android:id="@+id/mobile_combo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" > <FrameLayout android:layout_height="17dp" android:layout_width="wrap_content"> <ImageView android:id="@+id/mobile_in" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_activity_down" android:visibility="gone" android:paddingEnd="2dp" /> <ImageView android:id="@+id/mobile_out" android:layout_height="wrap_content" android:layout_width="wrap_content" android:src="@drawable/ic_activity_up" android:paddingEnd="2dp" android:visibility="gone" /> </FrameLayout> NPCJMF@TJHOBM@HSPVQYNM ϞόΠϧ௨৴ঢ়گΞΠίϯ ௨৴छผ ΞΠίϯ ిڧΞΠίϯ ϩʔϛϯάΞΠίϯ
ΞϯςφϐΫτͷιʔεΛͬͯΈΑ͏ ΞΠίϯͷදࣔઃఆ QBDLBHFT4ZTUFN6*SFTWBMVFTDPOpHYNM ˡ௨৴Πϯδέʔλදࣔઃఆ ˡ-5&ଓ࣌(ͱදࣔ͢Δ͔Ͳ͏͔ ˢ-5&"ଓ࣌ɺ( -5&
ͱදࣔ͢Δ͔Ͳ͏͔
ΞϯςφϐΫτΛΧελϚΠζͯ͠Έͨ
ΞϯςφϐΫτΛΧελϚΠζͯ͠Έͨ ͜Μͳײ͡ʹͯ͠Έ·ͨ͠ ˞ιʔεHJUIVCͰެ։ͯ͠·͢ˣ ɹIUUQTHJUIVCDPN-JOFBHF:VJBOESPJE@GSBNFXPSLT@CBTF
ΞϯςφϐΫτΛΧελϚΠζͯ͠Έͨ ΞΠίϯσαΠϯมߋ w ֤௨৴छผΞΠίϯͷมߋ w ௨৴ঢ়گΞΠίϯͷมߋ w 8J'JిڧΞΠίϯͷมߋ
ΞΠίϯදࣔҐஔͷมߋ w ௨৴छผΞΠίϯΛిڧΞΠίϯͱಠཱ w ௨৴ঢ়گΞΠίϯΛ௨৴छผΞΠίϯͷԼʹ -5&ଓ࣌-5&ɺ-5&"ଓ࣌(ͱදࣔ w .PCJMF4JHOBM$POUSPMMFSKBWBͷॲཧมߋ
ࠓޙͷల
ࠓޙͷల 8J'Jଓ࣌ͷΞΠίϯόά w 8J'Jʹଓ͍ͯͯ͠ɺ ϞόΠϧ௨৴͕ߦΘΕͨͱ͖௨৴छผΞΠίϯΛද͍ࣔͨ͠ ిڧΞΠίϯͷมߋ w
BSSPXTΈ͍ͨͳΞΠίϯʹ͍ͨ͠ʂ
·ͱΊ
·ͱΊ ΞϯςφϐΫτͷΧελϚΠζํ๏ w 4ZTUFN6*BQLΛٯίϯύΠϧʢ/PVHBUҎલʣ w ιʔεΛվม͠Ϗϧυ ΞϯςφϐΫτͷॲཧ w
BOESPJE@GSBNFXPSLT@CBTFQBDLBHFT4ZTUFN6*ҎԼ w ΞϯςφϐΫτͷΞΠίϯɿSFTESBXBCMF w ΞΠίϯͷஔɿSFTMBZPVU w ΞΠίϯͷදࣔॲཧ ɹTSDDPNBOESPJETZTUFNVJTUBUVTCBS4JHOBM$MVTUFS7JFXKBWB ɹTSDDPNBOESPJETZTUFNVJTUBUVTCBSQPMJDZ.PCJMF4JHOBM$POUSPMMFSKBWB
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠