From 44580ec8cac2fed2e31cdda77590ebae2766fb83 Mon Sep 17 00:00:00 2001 From: Christopher Beckmann Date: Mon, 14 May 2018 05:59:52 +0200 Subject: [PATCH] Reworked the filter buttons. --- app/build.gradle | 30 ++++++++-------- .../activities/ChooseExerciseActivity.java | 36 +++++++------------ .../res/layout/activity_choose_exercise.xml | 26 +++++++------- .../layout/layout_section_filter_button.xml | 28 +++------------ app/src/main/res/values-v21/styles.xml | 30 ---------------- app/src/main/res/values/styles.xml | 14 ++++++++ build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 8 files changed, 62 insertions(+), 106 deletions(-) delete mode 100644 app/src/main/res/values-v21/styles.xml diff --git a/app/build.gradle b/app/build.gradle index 53ba018..0a5b116 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,13 +1,13 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 25 - buildToolsVersion '26.0.3' + compileSdkVersion 'android-P' + buildToolsVersion '27.0.3' defaultConfig { applicationId "org.secuso.privacyfriendlybreakreminder" minSdkVersion 21 - targetSdkVersion 25 + targetSdkVersion 27 versionCode 3 versionName "2.1" vectorDrawables.useSupportLibrary = true @@ -37,16 +37,16 @@ repositories { } dependencies { - compile fileTree(include: ['*.jar'], dir: 'libs') - compile 'com.android.support:appcompat-v7:25.4.0' - compile 'com.android.support:design:25.4.0' - compile 'com.github.bumptech.glide:glide:4.0.0' - compile 'com.android.support:support-v4:25.4.0' - compile 'com.android.support:support-annotations:27.1.1' - compile 'com.android.support:cardview-v7:25.4.0' - compile 'com.android.support.constraint:constraint-layout:1.1.0' - compile 'com.nex3z:flow-layout:1.0.0' - compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' - testCompile 'junit:junit:4.12' - compile 'com.shawnlin:number-picker:2.4.4' // https://github.com/ShawnLin013/NumberPicker + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:appcompat-v7:28.0.0-alpha1' + implementation 'com.android.support:design:28.0.0-alpha1' + implementation 'com.github.bumptech.glide:glide:4.0.0' + implementation 'com.android.support:support-v4:28.0.0-alpha1' + implementation 'com.android.support:support-annotations:27.1.1' + implementation 'com.android.support:cardview-v7:28.0.0-alpha1' + implementation 'com.android.support.constraint:constraint-layout:1.1.0' + implementation 'com.nex3z:flow-layout:1.0.0' + implementation 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' + testImplementation 'junit:junit:4.12' + implementation 'com.shawnlin:number-picker:2.4.4' // https://github.com/ShawnLin013/NumberPicker } diff --git a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ChooseExerciseActivity.java b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ChooseExerciseActivity.java index d5f3f57..38d2654 100644 --- a/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ChooseExerciseActivity.java +++ b/app/src/main/java/org/secuso/privacyfriendlybreakreminder/activities/ChooseExerciseActivity.java @@ -3,38 +3,31 @@ package org.secuso.privacyfriendlybreakreminder.activities; import android.content.Intent; import android.os.PersistableBundle; import android.support.annotation.Nullable; +import android.support.design.chip.Chip; +import android.support.design.chip.ChipGroup; import android.support.v4.content.ContextCompat; -import android.support.v4.util.Pair; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; -import android.support.v7.util.SortedList; import android.support.v7.widget.CardView; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.MenuItem; -import android.view.MotionEvent; import android.view.View; -import android.widget.ImageView; import android.widget.TextView; -import android.widget.ToggleButton; import org.secuso.privacyfriendlybreakreminder.R; import org.secuso.privacyfriendlybreakreminder.activities.adapter.ExerciseAdapter; import org.secuso.privacyfriendlybreakreminder.activities.helper.IExerciseTimeUpdateable; import org.secuso.privacyfriendlybreakreminder.database.SQLiteHelper; -import org.secuso.privacyfriendlybreakreminder.database.data.Exercise; -import com.nex3z.flowlayout.FlowLayout; import org.secuso.privacyfriendlybreakreminder.exercises.ExerciseLocale; import org.secuso.privacyfriendlybreakreminder.exercises.ExerciseSections; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.LinkedList; import java.util.List; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import static org.secuso.privacyfriendlybreakreminder.activities.adapter.ExerciseAdapter.ID_COMPARATOR; /** @@ -49,14 +42,14 @@ public class ChooseExerciseActivity extends AppCompatActivity implements IExerci public static final String EXTRA_SELECTED_EXERCISES = TAG+".EXTRA_SELECTED_EXERCISES"; - FlowLayout filterButtonLayout; + ChipGroup filterButtonLayout; RecyclerView exerciseList; TextView exerciseSetTimeText; ExerciseAdapter exerciseAdapter; SQLiteHelper databaseHelper; - List buttons; + List buttons; boolean[] buttonStates; @Override @@ -90,7 +83,7 @@ public class ChooseExerciseActivity extends AppCompatActivity implements IExerci private void initResources() { databaseHelper = new SQLiteHelper(this); - filterButtonLayout = (FlowLayout) findViewById(R.id.layout_filter_buttons); + filterButtonLayout = (ChipGroup) findViewById(R.id.layout_filter_buttons); exerciseList = (RecyclerView) findViewById(R.id.exercise_list); exerciseAdapter = new ExerciseAdapter(this, ID_COMPARATOR, this); exerciseAdapter.showCheckboxes(true); @@ -99,25 +92,22 @@ public class ChooseExerciseActivity extends AppCompatActivity implements IExerci exerciseList.setLayoutManager(gridLayout); exerciseList.setAdapter(exerciseAdapter); - filterButtonLayout.removeAllViews(); - final List sections = ExerciseSections.getSectionList(); buttonStates = new boolean[sections.size()]; - buttons = new ArrayList<>(sections.size()); + buttons = new ArrayList(sections.size()); for(int i = 0; i < sections.size(); ++i) { ExerciseSections section = sections.get(i); - View view = LayoutInflater.from(this).inflate(R.layout.layout_section_filter_button, null, false); - ToggleButton button = (ToggleButton) view.findViewById(R.id.button); - String sectionText = section.getLocalName(this); + Chip button = new Chip(this); + + button.setCheckable(true); button.setClickable(true); button.setChecked(false); - button.setTextOff(sectionText); - button.setTextOn(sectionText); - button.setText(sectionText); + button.setElegantTextHeight(true); + button.setChipText(sectionText); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -136,7 +126,7 @@ public class ChooseExerciseActivity extends AppCompatActivity implements IExerci }); buttons.add(button); - filterButtonLayout.addView(view); + filterButtonLayout.addView(button); } exerciseSetTimeText = (TextView) findViewById(R.id.exercise_set_time); diff --git a/app/src/main/res/layout/activity_choose_exercise.xml b/app/src/main/res/layout/activity_choose_exercise.xml index 8ff330c..85306d9 100644 --- a/app/src/main/res/layout/activity_choose_exercise.xml +++ b/app/src/main/res/layout/activity_choose_exercise.xml @@ -6,20 +6,21 @@ android:layout_height="match_parent" tools:context="org.secuso.privacyfriendlybreakreminder.activities.ChooseExerciseActivity"> - + app:layout_constraintTop_toTopOf="parent"> + + + tools:listitem="@layout/layout_exercise_grid_item" /> diff --git a/app/src/main/res/layout/layout_section_filter_button.xml b/app/src/main/res/layout/layout_section_filter_button.xml index 1b9cb4f..9d29f88 100644 --- a/app/src/main/res/layout/layout_section_filter_button.xml +++ b/app/src/main/res/layout/layout_section_filter_button.xml @@ -1,26 +1,8 @@ - - - - - \ No newline at end of file + android:layout_height="wrap_content" + android:text="Section" /> \ No newline at end of file diff --git a/app/src/main/res/values-v21/styles.xml b/app/src/main/res/values-v21/styles.xml deleted file mode 100644 index 2b32199..0000000 --- a/app/src/main/res/values-v21/styles.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 7761f7c..697a695 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -8,6 +8,7 @@ @color/colorAccent @style/AppTheme.AlertDialog + @style/TimePickerDialogStyle + + + + diff --git a/build.gradle b/build.gradle index a871b63..43c60c8 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:3.0.1' + classpath 'com.android.tools.build:gradle:3.1.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 528b1e7..bee1d60 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip