diff --git a/app/build.gradle b/app/build.gradle index 5fc0987..d8d0ab4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -67,11 +67,11 @@ dependencies { testCompile 'org.robolectric:robolectric:3.0' provided 'com.google.auto.value:auto-value:1.2' apt 'com.google.auto.value:auto-value:1.2' - compile 'com.android.support:appcompat-v7:24.2.1' - compile 'com.android.support:design:24.2.1' - compile 'com.android.support:support-v4:24.2.1' - compile 'com.android.support:recyclerview-v7:24.2.1' - compile 'com.android.support:gridlayout-v7:24.2.1' - compile 'com.android.support:cardview-v7:24.2.1' + compile 'com.android.support:appcompat-v7:24.2.0' + compile 'com.android.support:design:24.2.0' + compile 'com.android.support:support-v4:24.2.0' + compile 'com.android.support:recyclerview-v7:24.2.0' + compile 'com.android.support:gridlayout-v7:24.2.0' + compile 'com.android.support:cardview-v7:24.2.0' compile 'com.jakewharton:butterknife:7.0.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3db3c62..6f24fec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -15,7 +15,6 @@ diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java index d196136..aefad91 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/ExpandedAlarmViewHolder.java @@ -7,7 +7,6 @@ import android.media.RingtoneManager; import android.net.Uri; import android.os.Vibrator; import android.support.annotation.IdRes; -import android.support.design.widget.CheckableImageButton; import android.support.v4.graphics.drawable.DrawableCompat; import android.util.Log; import android.view.View; @@ -37,7 +36,7 @@ public class ExpandedAlarmViewHolder extends BaseAlarmViewHolder { @Bind(R.id.ok) Button mOk; @Bind(R.id.delete) Button mDelete; @Bind(R.id.ringtone) Button mRingtone; - @Bind(R.id.vibrate) CheckableImageButton mVibrate; + @Bind(R.id.vibrate) TempCheckableImageButton mVibrate; @Bind({R.id.day0, R.id.day1, R.id.day2, R.id.day3, R.id.day4, R.id.day5, R.id.day6}) ToggleButton[] mDays; diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/ui/TempCheckableImageButton.java b/app/src/main/java/com/philliphsu/clock2/alarms/ui/TempCheckableImageButton.java index bd13e15..1fd0234 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/ui/TempCheckableImageButton.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/ui/TempCheckableImageButton.java @@ -1,27 +1,107 @@ +/* + * Copyright (C) 2016 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package com.philliphsu.clock2.alarms.ui; import android.content.Context; -import android.support.design.widget.CheckableImageButton; +import android.support.v4.view.AccessibilityDelegateCompat; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.accessibility.AccessibilityEventCompat; +import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat; +import android.support.v7.widget.AppCompatImageButton; import android.util.AttributeSet; import android.view.SoundEffectConstants; +import android.view.View; +import android.view.accessibility.AccessibilityEvent; +import android.widget.Checkable; /** * Created by Phillip Hsu on 9/26/2016. * * Temporary fix for design support library's CheckableImageButton that toggles itself when clicked. + * + * We have copied over the original source code, because the class only exists on v24.2 but we are + * experiencing a lot of bugs on that. + * + * TODO: Now that we have settled on v24 support libs, extend back from CheckableImageButton + * and get rid of the original code. */ -public class TempCheckableImageButton extends CheckableImageButton { +public class TempCheckableImageButton extends AppCompatImageButton implements Checkable { + + private static final int[] DRAWABLE_STATE_CHECKED = new int[]{android.R.attr.state_checked}; + + private boolean mChecked; public TempCheckableImageButton(Context context) { - super(context); + this(context, null); } public TempCheckableImageButton(Context context, AttributeSet attrs) { - super(context, attrs); + this(context, attrs, android.support.v7.appcompat.R.attr.imageButtonStyle); } public TempCheckableImageButton(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + + ViewCompat.setAccessibilityDelegate(this, new AccessibilityDelegateCompat() { + @Override + public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(host, event); + event.setChecked(isChecked()); + } + + @Override + public void onInitializeAccessibilityNodeInfo(View host, + AccessibilityNodeInfoCompat info) { + super.onInitializeAccessibilityNodeInfo(host, info); + info.setCheckable(true); + info.setChecked(isChecked()); + } + }); + } + + @Override + public void setChecked(boolean checked) { + if (mChecked != checked) { + mChecked = checked; + refreshDrawableState(); + sendAccessibilityEvent( + AccessibilityEventCompat.TYPE_WINDOW_CONTENT_CHANGED); + } + } + + @Override + public boolean isChecked() { + return mChecked; + } + + @Override + public void toggle() { + setChecked(!mChecked); + } + + @Override + public int[] onCreateDrawableState(int extraSpace) { + if (mChecked) { + return mergeDrawableStates( + super.onCreateDrawableState(extraSpace + DRAWABLE_STATE_CHECKED.length), + DRAWABLE_STATE_CHECKED); + } else { + return super.onCreateDrawableState(extraSpace); + } } @Override // borrowed from CompoundButton#performClick() @@ -35,5 +115,4 @@ public class TempCheckableImageButton extends CheckableImageButton { } return handled; } - } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index aff3466..c0b150a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -12,7 +12,7 @@ + app:elevation="0dp"> + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index be8bfb4..b15973d 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -4,9 +4,10 @@ #303F9F #FF5252 - - @color/dark_gray + #212121 @android:color/black #FF5252 + + #1fffffff \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index a231111..e302fa3 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,49 +1,40 @@ + + + + - - - - - - - - - -