From 9db1789e3d7ae0c1aa9d8440259093d7d3ec227b Mon Sep 17 00:00:00 2001 From: Christopher Eby Date: Fri, 26 Feb 2010 23:43:49 -0600 Subject: [PATCH] Generate tinted control buttons on-the-fly --- res/drawable/hidden_next.xml | 4 +-- res/drawable/hidden_play_pause.xml | 4 +-- res/drawable/{next_normal.png => next.png} | Bin res/drawable/next.xml | 10 ------ res/drawable/next_focused.png | Bin 1722 -> 0 bytes res/drawable/{pause_normal.png => pause.png} | Bin res/drawable/pause.xml | 10 ------ res/drawable/pause_focused.png | Bin 1051 -> 0 bytes res/drawable/{play_normal.png => play.png} | Bin res/drawable/play.xml | 10 ------ res/drawable/play_focused.png | Bin 910 -> 0 bytes .../{previous_normal.png => previous.png} | Bin res/drawable/previous.xml | 10 ------ res/drawable/previous_focused.png | Bin 1810 -> 0 bytes res/layout/playback_buttons.xml | 9 ++--- src/org/kreed/vanilla/ControlButton.java | 32 ++++++++++++++++++ src/org/kreed/vanilla/NowPlayingActivity.java | 20 +++++------ src/org/kreed/vanilla/RemoteActivity.java | 6 ++-- 18 files changed, 52 insertions(+), 63 deletions(-) rename res/drawable/{next_normal.png => next.png} (100%) delete mode 100644 res/drawable/next.xml delete mode 100644 res/drawable/next_focused.png rename res/drawable/{pause_normal.png => pause.png} (100%) delete mode 100644 res/drawable/pause.xml delete mode 100644 res/drawable/pause_focused.png rename res/drawable/{play_normal.png => play.png} (100%) delete mode 100644 res/drawable/play.xml delete mode 100644 res/drawable/play_focused.png rename res/drawable/{previous_normal.png => previous.png} (100%) delete mode 100644 res/drawable/previous.xml delete mode 100644 res/drawable/previous_focused.png create mode 100644 src/org/kreed/vanilla/ControlButton.java diff --git a/res/drawable/hidden_next.xml b/res/drawable/hidden_next.xml index 551faab3..5b6140cf 100644 --- a/res/drawable/hidden_next.xml +++ b/res/drawable/hidden_next.xml @@ -2,9 +2,9 @@ + android:drawable="@drawable/next" /> + android:drawable="@drawable/next" /> \ No newline at end of file diff --git a/res/drawable/hidden_play_pause.xml b/res/drawable/hidden_play_pause.xml index 1493033e..c80526d0 100644 --- a/res/drawable/hidden_play_pause.xml +++ b/res/drawable/hidden_play_pause.xml @@ -2,9 +2,9 @@ + android:drawable="@drawable/pause" /> + android:drawable="@drawable/pause" /> \ No newline at end of file diff --git a/res/drawable/next_normal.png b/res/drawable/next.png similarity index 100% rename from res/drawable/next_normal.png rename to res/drawable/next.png diff --git a/res/drawable/next.xml b/res/drawable/next.xml deleted file mode 100644 index b1a1746b..00000000 --- a/res/drawable/next.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/drawable/next_focused.png b/res/drawable/next_focused.png deleted file mode 100644 index 9d654d60d4f0ef74f61664a26ee6ce89aa11cc7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1722 zcmV;r21WUaP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJ< z04g{V!R4R;00ufqL_t(&-tAfIPa0ViKQqiYFd(9WKpha!sHm}8)cELQyJ`H=ZnI5l zY}4BRp?=y_{~5DsHrecMTib3ojhjujNndfdtqLjv0$Lvo$U_DMWbS_0iYPvKxY;)0 z+}va`nfuHAo!>d>M-0J1l-M|6~yC-G#0qdAss zW(V>CQ_d)V7DvQYf^C5?QIgmU(_z-zt%P-bk>^QGJZ_;jQjn(g~ zpN`xcArV55OBYAPRTr2GXZq{=JNlG;CjFMag?Y#PI&yDBbl8|e4MPZl=6B6xe|^6R z03eByymQ03G8>w;aWv=kGd#`)Wi8 z9t2JhEy|YK?uu@c(ywgN%xK0l@*oQwKmY^K9!I;#&jiJDeJB2ZLY)XjFm4cp9}vM-al^gJ5Jak zfu~EKZ6gViY(3Rl*HzYKQhJpw8jI#px(c~8LO>8Ls$FHvUY3m?O5lL1m&yUiqoS!w zRdSg~Cbg_vX#KSQnGgx{!bvHs>npXaTO{Q#%Aawi92;+o-`PWeM;Xuf{@R^uqX?>` zy}G@=P14qeVHj2j7AYXf)2B|?bxJ!;3Xh^i@=EgHI0f*-YIm+(E7Piab-l)uz*0-q ziauSRQIpU#%Knr+8@fFt%?S035IO-9lVTB^kcmi!J8|Ji!b2M0&Bw%z@9;Rzs^^^P2f% zR2pRg?I!ZhoQZ>0w|p&@h{Y+ADmf{yTh=Tt7w@u1l~Fd)p131lkx%X(1kwoPvok!< zQ>*6XOAVLW3Z1+s?Ae%FnR16Dp(XAs?&{8ailS1ErYI_nK!KhzubEvg-esqFN?r(7 zBAM8>tXo{pgwwI5*ka=y@jV+x0WQdRCIA319Lw8N)2q|&kR-IUP`_}s^^zLWQI z-oW(Qv@0MAEQP-ge{TQ}J4z4$03<=?lmpwz?QN^i>T)KWj!0F6b*LP-5JEZQ z001QUWYXrdxg9ZwBT^Y*qo(N1qxM1=hGmvfg2+CS{84{k-Z$^^QNAT}oq3O^a=`%r z2yO*KbG|vJuf(^sabe?1R)=^D%e+>})>96@!@U?^bc9R8tW9ORnQyr8JkL9W&SiVl zZV!vYEN9{dv#N4bEU>Y)5x@Y0SV=6nr;P5z)?uES_02kcCB7wdt@+AP`}L!6001`Q zo8ejStdk{Jx4F)IS*=!QO`M}S_O!~5YI0L7ME>No1GJLti9Sk zc8Plc&-NAcT-R z=w7w^?Q4P3z~Z8Q@jBf54=#6;f@Ca~jKzboVCe1gTgyyrX6nYn8~tvBdjQ9A$hIfQ z1Q(8nIRps#xBS7$mC4zu=+uX6Pp+MH)w-@9H0DIE7R%n0{d>79NX9stW0wufgZY4I zZQ7scD6Js22|7;3LmbVq9}ORG95trAyu5G%#s33E0!0Ev0!0Ev0$-~A18!DLI8MN? Qk^lez07*qoM6N<$f<8zrH~;_u diff --git a/res/drawable/pause_normal.png b/res/drawable/pause.png similarity index 100% rename from res/drawable/pause_normal.png rename to res/drawable/pause.png diff --git a/res/drawable/pause.xml b/res/drawable/pause.xml deleted file mode 100644 index 8b279211..00000000 --- a/res/drawable/pause.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/drawable/pause_focused.png b/res/drawable/pause_focused.png deleted file mode 100644 index c0730b0a6fe9dd6f60b39d499b1172803f8cad0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1051 zcmV+$1mydPP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJ< z0R}8E=rBY800WyzL_t(&-tCx8YZFlvhTnTLna^YkeIBg>S_S-JaLoeo@p!}hT+)hE7aiREl9J;P! zXlMvABL+>=KnOuTpU29|3Z6fEj$AIcWiavaI5bVe;NT!)Mhwwt6gip!lBb-aD6Tm{5cX~kTu)qA?~mSpz*l*Nt8o$lQsZjYI=60Jn!a=%K*5ER?v37i z$k%w8t8o(jN`qCdYF2|)OR`y5c;sgDiI=;~_gIv5thvcfA8A%qkwMXOjT zTJxXhm$FiJe(m_$**fmM`Y2|`x{m5c4}^uV9O6TAFc9R5m7=v)Su;O={+N>qxfQ7NkGvaY>eeEnrJCtI@7cet-R#E0a%!bCNsifX7$ zZqr^Zy!zt%9H2Jk1y0~ywaf`Twdt08zzzr^C%Otf7zhUGR~l?BWV;Oq-gdBFIi>|T zjsv%GG%^IQ98(F2rr1tF1MWAY0nrrOS#kb!;K$LdM7(lL3-~Dm$90t3%E2qgTtd5f zh-(21?)}FdFhw(CJN6+s*jCTBW80=^W>|487upXJqD@*58XAUM-Ydu4g?>Alu}ZI; zZ(9k^w(Y|^wExRSTbsGRZKJI>bAS5}O~j70Q_z5$mMLf;Vn^Cpam))KlzjgLah;?a z-(kTqmk=Su(|5dbzPJz}#Pwl~2H}-s+5t-r z!Aj+oW7z>yHnZtmdZBEWE1Q4Cid|Vx=h6$NY-U+;%sX&l`oi$k=+u+N#l=q|L|GFx znShW&xnPx0GA+rkP@Plx+cLTWa}r)Ez+J=s6kJ2#L# zl03zlV?GBcrJ$4|aV=3!AaM==aP3!)HOIUIGjC>4DwlrR;>KAnmof8ZhB>#Rr!>10 zyc)j>08mvGJ;!=LDMk828mp_T0D!xbcbRg`3)noMjo9q~ymHJ7XlV5 V6 - - - - - \ No newline at end of file diff --git a/res/drawable/play_focused.png b/res/drawable/play_focused.png deleted file mode 100644 index 233a56551df468311a72b94295ff04c07a11b564..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 910 zcmV;919AL`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJ< z0SgeSDKd@#00Rz5L_t(&-tCxOZ_;2C#~<1vPzQw#w!k{vc$tFSC{s5Q7U#uo=F5%7 z8RK_wAIf;)jZ+t+nTg91oJ74a3y8sum#)BojZz8}Y3qe@F`bi9ZHwve$#Z#{{&W84 zob~{qqN1XrqSD7`dJV)juw}G?S~-aO%Aib^Xol9|QmZPT=^|UW$xY<4Fc(N>XM65)&-^IFJT{TthBAY!6T2 z4g8EHVp-`60YEr-O*+%Sv~$|;*ZBjsb=#`pz2Tv<1swK34FpYEC!I6anV_Av`^<05 zPZcRZ5Cm}48AJ!oA!q2U2lDua)`wo|KjRX$P9?qAuz zs<=V+JOA?n&u>?@iDV=Bg*nL->r?gHik-w7&A|***=j9TjHQa&Vx}@%SpX6sss=g& zIDzBSl{A^CC6aZt-XDuC4(3>vV_OtURii{Sw#jaOTztGZFZGVJ=hdQV!}NW*3v(=k k{(G;hsHmu@sQj0F0~x==dSd{0d;kCd07*qoM6N<$g2N-0VgLXD diff --git a/res/drawable/previous_normal.png b/res/drawable/previous.png similarity index 100% rename from res/drawable/previous_normal.png rename to res/drawable/previous.png diff --git a/res/drawable/previous.xml b/res/drawable/previous.xml deleted file mode 100644 index 12d33989..00000000 --- a/res/drawable/previous.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/res/drawable/previous_focused.png b/res/drawable/previous_focused.png deleted file mode 100644 index ba6a3bef179272a26125a8e12f7defb9ed336482..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmV+t2krQYP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2igJ< z04phBYV;ET00xptL_t(&-tAdkY*SSn|KD@(?bq$P?&G%G?8n^)Y%7JxG-4ncBZ-lS z5H!GMO3!Qxxf4W{Xg$HB{0VDJPU&7TuKB=1WE)-1WE*o5~^5$WHPzr ze3iHAtX|Nws##UJs1jpwU3_xNF||K4fAsUC1wX6P)%hbMFf1vPYC$JV&b%_Sr)UDt z>f~P>{ete=*L8uDIs5wR^)FQDD#~Y4GqG!ruJNns{$2aJdaQ!g)@o|CYH6+d_rUM` zns{I_F%6r3X7(`Eo3xvnxJs^$BuE4RP^K<0CQ#>N*KEg39I zrZj6pAm5tSTh<eRo}=&braOku&OyhQ+Xo_rN@! z>5l1~UeL1+#?jbR*JMEiLVy=v3(M$#;=qZsdO^>&&@Bz?YuDRIM3T?ChXMf5y0t&( z6MB}w1d2293878sC|rLG)*)+momgjenw?yQw!*N~+I%bKd!wtp>r!p3*6K7n?Nz!e zF$VR%eaV#xiVWAy^r5RQ?akiDpnUXDL-vLyNt|PLnjXl7!C;005KU zbc*R<*am25Y_+%ARg{WeY3@<7BF_Qh<%yK{mj7x_&Ra@9XQ@Jo=ZBEZYrAMpm~9TT z!%}0Ysa`2oHiTqJ&auj3B~I;DpVGy3Y&}`u=-?c76{(^Dudd``z)(L_{~L$61_$Th zG?YfQS}XtnN)*K$rLmHWR@Pf~(UdT)+EV#KVv=qvYujuwTFk{@Wpf}yAm0O(e^kDs zAmy-~us1k4C#R;=DkyUQj{u=<+_qLNt<@BZmCb=H0azf=(a}+^`B3v!i>al~YP6cy z>J@_^2trG1HEV&D6GDojWEm+~f$mSc&%DIERBJI>%ozTk$1Yg{k|gDJNsIx>h+b`? z{$~W{l|zy&EtJvu5|=b2Cp`~5WB$kf(Es+}YhEp+C`xXF!2s#Dv}PtSxy9a^;BPlVJF2?gR z$dWtm_FNyk?h`~IRrID_tJ4BP3wwJKk^fpWvwfx~_C{<+kPiC(^#3^=eiEK4qLji& z^T>_|ng_mX{%hXxnej)f!a;MPf@F{Z0|sLLTB>Zux5alyY9qG?=BWF>1`q zKjep_$>{WoUM0u{4-c&y>iPKM$2)>_&^Hhs7@iWQ9v6I^LQ%QrLKy;uN_0zfSGX+f zy)k`*AALOPmlauFZCHJB{*&EdWB6}A#`AZk?%b2)`Q}szk>lSUPo3^P{V*^S2uX@0 z3tC~a(3^!ep(7j)!-la9-H~u4)>_rdm21ikh2%kgLpprsunPd-bhIfXTkgqS&$KQ+I3n+MgpSZ|c3^?m; zf*?S`QqDMd{@}ZzvXHlbx}P73jQC}|xMwp2h+;eK#Kc6-_vU-eJ*>#u9IS&gsOOGV zG9oFGd?j#&cRSr%GQWNO&DYPwKDGB$ca>OWbyPbzqsExy*~|XR{P_0qmy13dMF{1L z(RHKmgmfWa?_}?Qf7(Be0V_{iJpZ1hZYBpn#&}=jxghKnOvg zA+WdoLi<~{XK&x)L%eT#cKQhr07)sClqe}#C;xphTcVphTcV;CYsR0Hs{SMVb;!6#xJL07*qoM6N<$g5Df$ AdjJ3c diff --git a/res/layout/playback_buttons.xml b/res/layout/playback_buttons.xml index f8887d01..1450bdff 100644 --- a/res/layout/playback_buttons.xml +++ b/res/layout/playback_buttons.xml @@ -1,25 +1,22 @@ - - - \ No newline at end of file diff --git a/src/org/kreed/vanilla/ControlButton.java b/src/org/kreed/vanilla/ControlButton.java new file mode 100644 index 00000000..9687aff2 --- /dev/null +++ b/src/org/kreed/vanilla/ControlButton.java @@ -0,0 +1,32 @@ +package org.kreed.vanilla; + +import android.content.Context; +import android.graphics.Color; +import android.graphics.PorterDuff; +import android.util.AttributeSet; +import android.widget.ImageView; + +public class ControlButton extends ImageView { + private static final int ACTIVE_TINT = Color.argb(100, 0, 255, 0); + private static final int INACTIVE_TINT = Color.TRANSPARENT; + private int mTint = Color.TRANSPARENT; + + public ControlButton(Context context, AttributeSet attrs) + { + super(context, attrs); + + setFocusable(true); + } + + @Override + protected void drawableStateChanged() + { + super.drawableStateChanged(); + + int tint = isPressed() || isFocused() ? ACTIVE_TINT : INACTIVE_TINT; + if (tint != mTint) { + setColorFilter(tint, PorterDuff.Mode.SRC_ATOP); + mTint = tint; + } + } +} \ No newline at end of file diff --git a/src/org/kreed/vanilla/NowPlayingActivity.java b/src/org/kreed/vanilla/NowPlayingActivity.java index dff377a7..55814a00 100644 --- a/src/org/kreed/vanilla/NowPlayingActivity.java +++ b/src/org/kreed/vanilla/NowPlayingActivity.java @@ -40,7 +40,7 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; -import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.SeekBar; @@ -55,9 +55,9 @@ public class NowPlayingActivity extends Activity implements ServiceConnection, V private View mControlsTop; private View mControlsBottom; - private ImageButton mPreviousButton; - private ImageButton mPlayPauseButton; - private ImageButton mNextButton; + private View mPreviousButton; + private ImageView mPlayPauseButton; + private View mNextButton; private SeekBar mSeekBar; private TextView mSeekText; private Button mReconnectButton; @@ -81,20 +81,20 @@ public class NowPlayingActivity extends Activity implements ServiceConnection, V mCoverView.setOnClickListener(this); mLayout = (ViewGroup)mCoverView.getParent(); - + mControlsTop = findViewById(R.id.controls_top); mControlsBottom = findViewById(R.id.controls_bottom); - - mPreviousButton = (ImageButton)findViewById(R.id.previous); + + mPreviousButton = findViewById(R.id.previous); mPreviousButton.setOnClickListener(this); mPreviousButton.setOnFocusChangeListener(this); - mPlayPauseButton = (ImageButton)findViewById(R.id.play_pause); + mPlayPauseButton = (ImageView)findViewById(R.id.play_pause); mPlayPauseButton.setOnClickListener(this); mPlayPauseButton.setOnFocusChangeListener(this); - mNextButton = (ImageButton)findViewById(R.id.next); + mNextButton = findViewById(R.id.next); mNextButton.setOnClickListener(this); mNextButton.setOnFocusChangeListener(this); - + mSeekText = (TextView)findViewById(R.id.seek_text); mSeekBar = (SeekBar)findViewById(R.id.seek_bar); mSeekBar.setMax(1000); diff --git a/src/org/kreed/vanilla/RemoteActivity.java b/src/org/kreed/vanilla/RemoteActivity.java index 6d06c781..e02d1a21 100644 --- a/src/org/kreed/vanilla/RemoteActivity.java +++ b/src/org/kreed/vanilla/RemoteActivity.java @@ -32,7 +32,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.view.View; import android.view.Window; -import android.widget.ImageButton; +import android.widget.ImageView; public class RemoteActivity extends Activity implements ServiceConnection, View.OnClickListener { private CoverView mCoverView; @@ -40,7 +40,7 @@ public class RemoteActivity extends Activity implements ServiceConnection, View. private View mOpenButton; private View mKillButton; private View mPreviousButton; - private ImageButton mPlayPauseButton; + private ImageView mPlayPauseButton; private View mNextButton; @Override @@ -59,7 +59,7 @@ public class RemoteActivity extends Activity implements ServiceConnection, View. mKillButton.setOnClickListener(this); mPreviousButton = findViewById(R.id.previous); mPreviousButton.setOnClickListener(this); - mPlayPauseButton = (ImageButton)findViewById(R.id.play_pause); + mPlayPauseButton = (ImageView)findViewById(R.id.play_pause); mPlayPauseButton.setOnClickListener(this); mNextButton = findViewById(R.id.next); mNextButton.setOnClickListener(this);