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
WebViewの現在地 - SwiftUI時代のWebKit - / The Current State Of WebView
marcy731
0
100
Modern Angular with Signals and Signal Store:New Rules for Your Architecture @enterJS Advanced Angular Day 2025
manfredsteyer
PRO
0
130
Bytecode Manipulation 으로 생산성 높이기
bigstark
2
380
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
460
NPOでのDevinの活用
codeforeveryone
0
420
PHPでWebSocketサーバーを実装しよう2025
kubotak
0
220
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
100
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
230
ふつうの技術スタックでアート作品を作ってみる
akira888
0
150
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
170
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
160
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
320
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Making Projects Easy
brettharned
116
6.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Embracing the Ebb and Flow
colly
86
4.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Practical Orchestrator
shlominoach
188
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Raft: Consensus for Rubyists
vanstee
140
7k
Gamification - CAS2011
davidbonilla
81
5.3k
Site-Speed That Sticks
csswizardry
10
660
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
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
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠