From 8be44c209c381e806416ce8a943782c94c9379db Mon Sep 17 00:00:00 2001 From: inorichi <chibilen@gmail.com> Date: Sat, 9 Jan 2016 00:57:02 +0100 Subject: [PATCH] Show selected decoder and background color in the popup menu. Reload adapter when the decoder changes. --- .../mangafeed/ui/reader/ReaderMenu.java | 36 ++++++++++++------ .../reader/viewer/webtoon/WebtoonAdapter.java | 4 ++ .../reader/viewer/webtoon/WebtoonHolder.java | 3 ++ .../reader/viewer/webtoon/WebtoonReader.java | 14 +++++++ .../reader_background_checkbox_selected.png | Bin 0 -> 227 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 249 bytes .../reader_background_checkbox_selected.png | Bin 0 -> 136 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 153 bytes .../reader_background_checkbox_selected.png | Bin 0 -> 142 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 148 bytes .../reader_background_checkbox_selected.png | Bin 0 -> 234 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 234 bytes .../reader_background_checkbox_selected.png | Bin 0 -> 366 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 387 bytes .../reader_background_checkbox_selected.png | Bin 0 -> 434 bytes .../reader_background_checkbox_unselected.png | Bin 0 -> 499 bytes .../drawable/reader_background_checkbox.xml | 5 +++ app/src/main/res/layout/reader_popup.xml | 31 ++++++++++----- 18 files changed, 72 insertions(+), 21 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png create mode 100644 app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_unselected.png create mode 100644 app/src/main/res/drawable/reader_background_checkbox.xml diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java b/app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java index a2039f936..cd3016119 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/reader/ReaderMenu.java @@ -29,6 +29,7 @@ import eu.kanade.mangafeed.R; import eu.kanade.mangafeed.data.database.models.Chapter; import eu.kanade.mangafeed.data.database.models.Manga; import eu.kanade.mangafeed.data.preference.PreferencesHelper; +import eu.kanade.mangafeed.ui.reader.viewer.base.BaseReader; import icepick.State; import rx.Subscription; @@ -245,8 +246,9 @@ public class ReaderMenu { @Bind(R.id.show_page_number) CheckBox showPageNumber; @Bind(R.id.hide_status_bar) CheckBox hideStatusBar; @Bind(R.id.keep_screen_on) CheckBox keepScreenOn; + @Bind(R.id.reader_theme) CheckBox readerTheme; @Bind(R.id.image_decoder) TextView imageDecoder; - @Bind(R.id.reader_theme) TextView readerTheme; + @Bind(R.id.image_decoder_initial) TextView imageDecoderInitial; public SettingsPopupWindow(View view) { super(view, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); @@ -261,6 +263,8 @@ public class ReaderMenu { showPageNumber.setChecked(preferences.showPageNumber().get()); hideStatusBar.setChecked(preferences.hideStatusBar().get()); keepScreenOn.setChecked(preferences.keepScreenOn().get()); + readerTheme.setChecked(preferences.readerTheme().get() == 1); + setDecoderInitial(preferences.imageDecoder().get()); // Add a listener to change the corresponding setting enableTransitions.setOnCheckedChangeListener((view, isChecked) -> @@ -275,6 +279,9 @@ public class ReaderMenu { keepScreenOn.setOnCheckedChangeListener((view, isChecked) -> preferences.keepScreenOn().set(isChecked)); + readerTheme.setOnCheckedChangeListener((view, isChecked) -> + preferences.readerTheme().set(isChecked ? 1 : 0)); + imageDecoder.setOnClickListener(v -> { showImmersiveDialog(new MaterialDialog.Builder(activity) .title(R.string.pref_image_decoder) @@ -282,22 +289,27 @@ public class ReaderMenu { .itemsCallbackSingleChoice(preferences.imageDecoder().get(), (dialog, itemView, which, text) -> { preferences.imageDecoder().set(which); + setDecoderInitial(which); return true; }) .build()); }); + } - readerTheme.setOnClickListener(v -> { - showImmersiveDialog(new MaterialDialog.Builder(activity) - .title(R.string.pref_reader_theme) - .items(R.array.reader_themes) - .itemsCallbackSingleChoice(preferences.readerTheme().get(), - (dialog, itemView, which, text) -> { - preferences.readerTheme().set(which); - return true; - }) - .build()); - }); + private void setDecoderInitial(int decoder) { + String initial; + switch (decoder) { + case BaseReader.SKIA_DECODER: + initial = "S"; + break; + case BaseReader.RAPID_DECODER: + initial = "R"; + break; + default: + initial = ""; + break; + } + imageDecoderInitial.setText(initial); } } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java index ee19e380d..7a738e7f1 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonAdapter.java @@ -61,4 +61,8 @@ public class WebtoonAdapter extends RecyclerView.Adapter<WebtoonHolder> { fragment.getReaderActivity().getPresenter().retryPage(page); } + public WebtoonReader getReader() { + return fragment; + } + } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java index 95fba602e..090e1d6de 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonHolder.java @@ -26,9 +26,11 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { private Animation fadeInAnimation; private Page page; + private WebtoonAdapter adapter; public WebtoonHolder(View view, WebtoonAdapter adapter, View.OnTouchListener touchListener) { super(view); + this.adapter = adapter; ButterKnife.bind(this, view); fadeInAnimation = AnimationUtils.loadAnimation(view.getContext(), R.anim.fade_in); @@ -88,6 +90,7 @@ public class WebtoonHolder extends RecyclerView.ViewHolder { setErrorButtonVisible(false); setProgressVisible(false); setImageVisible(true); + imageView.setRegionDecoderClass(adapter.getReader().getRegionDecoderClass()); imageView.setImage(ImageSource.uri(page.getImagePath())); } diff --git a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java index 169604adb..9457da5d5 100644 --- a/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java +++ b/app/src/main/java/eu/kanade/mangafeed/ui/reader/viewer/webtoon/WebtoonReader.java @@ -27,6 +27,7 @@ public class WebtoonReader extends BaseReader { private RecyclerView recycler; private PreCachingLayoutManager layoutManager; private Subscription subscription; + private Subscription decoderSubscription; private GestureDetector gestureDetector; @Nullable @@ -42,6 +43,13 @@ public class WebtoonReader extends BaseReader { recycler.setItemAnimator(null); recycler.setAdapter(adapter); + decoderSubscription = getReaderActivity().getPreferences().imageDecoder() + .asObservable() + .doOnNext(this::setRegionDecoderClass) + .skip(1) + .distinctUntilChanged() + .subscribe(v -> adapter.notifyDataSetChanged()); + gestureDetector = new GestureDetector(getActivity(), new SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { @@ -63,6 +71,12 @@ public class WebtoonReader extends BaseReader { return recycler; } + @Override + public void onDestroyView() { + decoderSubscription.unsubscribe(); + super.onDestroyView(); + } + @Override public void onPause() { unsubscribeStatus(); diff --git a/app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-hdpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..9908433c073331a4d7356e7ea97e53e8377abaf3 GIT binary patch literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtRh}-6Ar-gY&N#?>SV4g0r{cwi zyKylcg`SGJH~sGg^1Zyo*xh8T{8l`#fnS=5f#JY>L0!)&E9B}n+UV?7EkE}zd;O`0 z^QT=7a?Q*ZZ*}={Ia7Mi(ah?cz4L=VX|H2uS!KWSO0)vMh(((C2@Zt@1|}rp&P#90 zugmLF))r}IO?{9WEGQnG`(yg1xzT@1HtoM0xAjr^T3^dQx~F0p7#ik3V)mCgv;Fno SnjJt_GkCiCxvX<aXaWFFv{#w{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-hdpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..195e875fbd439ee9309802611175ed1199783bd5 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUt1D-C9Ar-gY&e+J?Y#`wJazaov zmvY5g1CF#MDu)ePJUw%d+JE9G*EmppY3sh~Z>IlZ*%=rLRGm0#*Uk?9y6*6CiT9^B z*%X}%UYim#`P@2Nw(}3?FP*aW+Ov@Cw;zqBU%33L?AC{S9!Vy#>Tj3N+i`c2`Rp(+ z+qJBh`j|dnWEEoKP-tL4BGP{a$^8o6pT6dkVSi}U22+iaBED@Ve{LJkoqXiRq60S# q!v4%%y7_LKz3UEc28Iv$HH>^Wj;nEXT4n?N!r<xZ=d#Wzp$Pz!BxU>n literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-ldpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..d06d87c9571bac625d670ea2a8fbcfa0578831bc GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`{+=$5Ar-fh6C`>Xx*3jft2FH3 z>X2^OA;)X(@Koi)O`f0+Tpjx#99X{~Ye#|P1%}Wc{OtdjLYpr)R4MVSkblM&Ak!h@ js(h5QQ_FMaKL&<ie*c9cHC(AcqZvG1{an^LB{Ts5fUzq- literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-ldpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..4899a16ffc9890aefd50d110a5b7eca10f32d49c GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`37#&FAr-fh6C^?$TwGXMc5)=# znYBK4x7x>7S66E(<S{&|GT{+g&9w4h7RQN_2~G9?|LtXZq;K&-dxF%2s2DaA2hm4N z@eWxZBm?|g7{4CA!_dV%aZ$z+9mT*oQ`mVJ7*<THj1W>|eFe0O!PC{xWt~$(696tE BGmZcN literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-mdpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..f0faf295f8548ba7617af2bcec6c1faff28fdf8d GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJP)`@fkcwMxr)}f~O0eYKIdE5I z9<Rh9564_awIdbNV}8e}uVp+iGp}!n?dKmRN3Se+B)zcXA+z?%A7L5}`YalZECLP; pj4U>?0l#FY%d0$9mpmY!BUo-X$Lr_exj+jTJYD@<);T3K0RYA_E|vfQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-mdpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..69e1ee734a399d3880c6b4aa55b467f257eba37a GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=ffJXipc%kcwMxuNm?lFyL{ysFRqG zm-<eXhtDNcwvo?IRr}R{2EF|5;|hzWD<vJP+x({@EpF1ZSGxIA1eR4lxOYbS-YTXq sj1EAPfZ)KzhHLM4d{@Y{KiN@tnc49NvqRR;%&j0PPgg&ebxsLQ07<bl)Bpeg literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-xhdpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..7c8102d17ac1af612c6e34a258f279800b807276 GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=8$DedLn>~)y=BPPY#`w3D6+Kt zaA-|tpNs!t-i!dTOzvAE8#`_Mf0>>;BI`3*#dDI%%hz!mg=Sl?eImK*OW)NSLbsEu zALssjGb=sw-}!j{xMcS?Z?-6(4~V|sGU=CX{U6!Hlg6gm=d>&AQljUr)I9J{p+OdC zFCJjeEb;5<ix2CMxBqu|l=Z?t<(+xrjs7KIyYqiD*nau(b<*=2|3M~ry85}Sb4q9e E08T<#9RL6T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-xhdpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..4faa255e6a96a1318a8245fce3db798805f74c3a GIT binary patch literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=8$DedLn>~)y`{)^SV5xg;j)?Y z9}4U}pm&!!^vd~yW=SKv%V*9x9Q~}8@z3t)!A%~MR6HmBTRmmdx34;%Pu+VxrT_l6 zw}mptS6|!p{p-5Nr{`6tozOY_zs4+Y?cCbhTYENrpBdRUuSI6>3;%yVxD_|2ESt!n z>b~Lbk~5QLx-nmoW()zk0T0+AQ)>IJu|?fT&eIcQb=@zf14sY&omgYK38c%@)z4*} HQ$iB}LHk}{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-xxhdpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..287892b71b130a0fa24a9bd738323c915b22d0f6 GIT binary patch literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>U^Mk~aSW-r_4dxfzC#WI4G%?C z(zQR-PT0Mj@t%NAfAB???#xSfOeA@PE}!}I_vDYf{b{e4nR-rAfg!v1>S-O8VzU+J z@6BnSVfaj>xPNBSGbQ7v#`8b(w0G(MH-9Gexg#>^TGHkxo9}<pSt@X>=I8k){eQLd zIt{{hefIzPb<Nx}%Ig;k{cllxe}1WQgX(#c5C)59{yA@Rmf1veHtck6kOaDyVo<`9 z5PGmL^4iAY+g{Uiw|eKl&eB_ZfopT_&WqcgoH(>>Zq-_y-COO#rv2TzsQU4-J$<Y6 q-tOMA$ou!b|D4ytybxaAx32z7f!@WM|EwV(M|ryXxvX<aXaWGqhKcw9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-xxhdpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..b279adbbd44b6215230f0239bf3bc694ebc24d2a GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7Ro>VD$2IaSW-r_4bZp-eCs;hl>qf zOW964*S3E%E6t0zEO*$QBSO<e<<cs-OzqYwQzACk#z(#TTCA4ir|vmP1&00wXsVuj zUAJt~`jz(8=ce1A|9pB|?(?YE$LsceD_&c<>sxx<Bfi4vJ^KIGZvD1%{_Q$B-T3~0 zZ?f;G@;d!VdA$0i{{MTQ%HMN57kRAlEUjnmzpp))bdLqz(Pcg$^4a+1ji045N9R7u zlVtGv)4BCvm-SR0;}y(T7#X#I{-790NE}$z#LTGk+CoC%+Etz0J*B48bzW!HiJ7fE zduUm5RaE4*ZH8gf_NL#J7We)=?TGhpJ<aLgZ2Oh7wN+sOpyK&|YyPo_FB`5Oj=ThN Nk*BMl%Q~loCIEp9kQV>| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png b/app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..90c1bd6f56549cce91c1055099eaf7bb5df43060 GIT binary patch literal 434 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrV660XaSW-r_4ckKSF?eLYvA#` z<-2)P%-<ba%CSweg)c{WO4$=@_J2%Y;ye0`e1ZCq!2O+DHFK|-MbG|yH2wAYs9&3p z&$@lZtopzu_s!qS4b=7OIph8mPTRt<YUzGoU#rjM-2W?NTxx_xPRsduawKeh@o)_% zV~$wuukMOUv06JOfd&Q^1qMbA2Zq7K{B!8&#K)aGEG}K$2&Am8J-rB|Y;Jx1IA8tQ zuOG{^9_9xxS16u+^iurhFXcu{T>}pHH}BowyyL0-eon9dOnyIH@BG?4ZHciwQou1V a{OD)T{q(Kt;-+0{AaPGuKbLh*2~7Yab%i<r literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_unselected.png b/app/src/main/res/drawable-xxxhdpi/reader_background_checkbox_unselected.png new file mode 100644 index 0000000000000000000000000000000000000000..5a3af58d655c84a1e27249befb73805cd3f6db79 GIT binary patch literal 499 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7xzrVBF>D;uunK>+Ri(oXrLz4j1co z_uXdO)EjNll^~_4%es1sljp~|?BxuTowvrn5A)iona9V-&<-?5fPu+@frEijfq?}d z=f|Rr)3S<lHLuTKYMY&PUQX;l!0D}9kIdaV_n-jpfo}(b4f|(SDZXG;*!}tL6AgxA z5A1)ZuWvSFYIw4aU)`0#VE6OGGnE-4?tFe3f8;c?!E<JY!2-nG|D`$U^lh>FR^ha! zZ>!C(3MZZZZFc|uwnWPBpL+LuUQz$<7pw^@eBb@C47Q$Zz#zv_^x^u!Tjvs9l=9m$ z?x_=A@{LvIq5h*w^Gv^1JpZrEz(^o0k%QdsJ>QhCj;Ed%cDjQC#M9N!Wt~$(699+? BfB^si literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/reader_background_checkbox.xml b/app/src/main/res/drawable/reader_background_checkbox.xml new file mode 100644 index 000000000..2ace26fce --- /dev/null +++ b/app/src/main/res/drawable/reader_background_checkbox.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_checked="true" android:drawable="@drawable/reader_background_checkbox_selected" /> + <item android:drawable="@drawable/reader_background_checkbox_unselected" /> +</selector> \ No newline at end of file diff --git a/app/src/main/res/layout/reader_popup.xml b/app/src/main/res/layout/reader_popup.xml index e165bf56d..ec0299e68 100644 --- a/app/src/main/res/layout/reader_popup.xml +++ b/app/src/main/res/layout/reader_popup.xml @@ -8,17 +8,30 @@ android:paddingTop="5dp" android:paddingBottom="5dp"> - <TextView - android:id="@+id/reader_theme" - android:paddingLeft="32dp" - style="@style/reader_menu_settings_item" - android:text="@string/pref_reader_theme"/> + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content"> - <TextView - android:id="@+id/image_decoder" - android:paddingLeft="32dp" + <TextView + android:id="@+id/image_decoder_initial" + android:layout_width="32dp" + android:layout_height="wrap_content" + android:textSize="16sp" + android:gravity="center" + android:textColor="@color/colorAccent"/> + + <TextView + android:id="@+id/image_decoder" + style="@style/reader_menu_settings_item" + android:text="@string/pref_image_decoder"/> + + </LinearLayout> + + <CheckBox + android:id="@+id/reader_theme" style="@style/reader_menu_settings_item" - android:text="@string/pref_image_decoder"/> + android:button="@drawable/reader_background_checkbox" + android:text="@string/pref_reader_theme"/> <CheckBox android:id="@+id/enable_transitions"