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
320
20190127_android_quick_settings
umikaki5017
0
390
Other Decks in Programming
See All in Programming
テスト分析入門/Test Analysis Tutorial
goyoki
12
2.7k
CRUD から CQRS へ ~ 分離が可能にする柔軟性
tkawae
0
230
Perlで痩せる
yuukis
1
660
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.4k
ワンバイナリWebサービスのススメ
mackee
10
7.5k
型付け力を強化するための Hoogle のすゝめ / Boosting Your Type Mastery with Hoogle
guvalif
1
230
primeNumberでのRBS導入の現在 && RBS::Traceでinline RBSを拡充してみた
mnmandahalf
0
260
〜可視化からアクセス制御まで〜 BigQuery×Looker Studioで コスト管理とデータソース認証制御する方法
cuebic9bic
2
270
イベントソーシングとAIの親和性ー物語とLLMに理解できるデータ
tomohisa
1
160
What Spring Developers Should Know About Jakarta EE
ivargrimstad
1
620
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
260
Babylon.js 8.0のアプデ情報を 軽率にキャッチアップ / catch-up-babylonjs-8
drumath2237
0
110
Featured
See All Featured
Six Lessons from altMBA
skipperchong
28
3.8k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
The Cult of Friendly URLs
andyhume
78
6.4k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Statistics for Hackers
jakevdp
799
220k
Building Adaptive Systems
keathley
41
2.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
233
140k
Facilitating Awesome Meetings
lara
54
6.4k
Being A Developer After 40
akosma
91
590k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠