1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

Migrate to AppCompat 23.1.1

Removed legacy hacks
Material dialogs on older versions
This commit is contained in:
Christophe Beyls 2015-12-26 23:39:02 +01:00
parent 63bd76f5ed
commit 9ffa61f70b
18 changed files with 59 additions and 97 deletions

View file

@ -1,13 +1,13 @@
apply plugin: 'com.android.application' apply plugin: 'com.android.application'
android { android {
compileSdkVersion 21 compileSdkVersion 23
buildToolsVersion "21.1.2" buildToolsVersion "23.0.2"
defaultConfig { defaultConfig {
applicationId "be.digitalia.fosdem" applicationId "be.digitalia.fosdem"
minSdkVersion 7 minSdkVersion 7
targetSdkVersion 21 targetSdkVersion 23
versionCode 700131 versionCode 700131
versionName "1.3.1" versionName "1.3.1"
} }
@ -21,12 +21,11 @@ android {
} }
ext { ext {
supportLibraryVersion = '21.0.3' supportLibraryVersion = '23.1.1'
} }
dependencies { dependencies {
compile "com.android.support:appcompat-v7:$supportLibraryVersion" compile "com.android.support:appcompat-v7:$supportLibraryVersion"
compile "com.android.support:cardview-v7:$supportLibraryVersion" compile "com.android.support:cardview-v7:$supportLibraryVersion"
// Version 1.2.3 has a bug and crashes when detecting 2-finger gestures. Use 1.2.2 instead. compile 'com.github.chrisbanes.photoview:library:1.2.4'
compile 'com.github.chrisbanes.photoview:library:1.2.2'
} }

View file

@ -84,7 +84,7 @@
android:name=".activities.RoomImageDialogActivity" android:name=".activities.RoomImageDialogActivity"
android:excludeFromRecents="true" android:excludeFromRecents="true"
android:taskAffinity="" android:taskAffinity=""
android:theme="@style/DialogTheme"/> android:theme="@style/AlertDialogTheme"/>
<activity <activity
android:name=".activities.SettingsActivity" android:name=".activities.SettingsActivity"
android:label="@string/settings"/> android:label="@string/settings"/>

View file

@ -10,7 +10,7 @@ import android.support.v4.app.NavUtils;
import android.support.v4.app.TaskStackBuilder; import android.support.v4.app.TaskStackBuilder;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.Toast; import android.widget.Toast;
@ -27,7 +27,7 @@ import be.digitalia.fosdem.utils.NfcUtils.CreateNfcAppDataCallback;
* *
* @author Christophe Beyls * @author Christophe Beyls
*/ */
public class EventDetailsActivity extends ActionBarActivity implements LoaderCallbacks<Event>, CreateNfcAppDataCallback { public class EventDetailsActivity extends AppCompatActivity implements LoaderCallbacks<Event>, CreateNfcAppDataCallback {
public static final String EXTRA_EVENT = "event"; public static final String EXTRA_EVENT = "event";

View file

@ -1,7 +1,6 @@
package be.digitalia.fosdem.activities; package be.digitalia.fosdem.activities;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.app.SearchManager; import android.app.SearchManager;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
@ -27,8 +26,9 @@ import android.support.v4.app.FragmentTransaction;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.support.v4.view.MenuItemCompat; import android.support.v4.view.MenuItemCompat;
import android.support.v4.widget.DrawerLayout; import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.text.SpannableString; import android.text.SpannableString;
@ -67,7 +67,7 @@ import be.digitalia.fosdem.widgets.AdapterLinearLayout;
* *
* @author Christophe Beyls * @author Christophe Beyls
*/ */
public class MainActivity extends ActionBarActivity { public class MainActivity extends AppCompatActivity {
private enum Section { private enum Section {
TRACKS(TracksFragment.class, R.string.menu_tracks, R.drawable.ic_event_grey600_24dp, true), TRACKS(TracksFragment.class, R.string.menu_tracks, R.drawable.ic_event_grey600_24dp, true),

View file

@ -3,7 +3,7 @@ package be.digitalia.fosdem.activities;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.TextView; import android.widget.TextView;
@ -12,7 +12,7 @@ import be.digitalia.fosdem.R;
import be.digitalia.fosdem.fragments.PersonInfoListFragment; import be.digitalia.fosdem.fragments.PersonInfoListFragment;
import be.digitalia.fosdem.model.Person; import be.digitalia.fosdem.model.Person;
public class PersonInfoActivity extends ActionBarActivity { public class PersonInfoActivity extends AppCompatActivity {
public static final String EXTRA_PERSON = "person"; public static final String EXTRA_PERSON = "person";

View file

@ -1,17 +1,18 @@
package be.digitalia.fosdem.activities; package be.digitalia.fosdem.activities;
import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView; import android.widget.ImageView;
import be.digitalia.fosdem.R;
/** /**
* A special Activity which is displayed like a dialog and shows a room image. Specify the room name and the room image id as Intent extras. * A special Activity which is displayed like a dialog and shows a room image. Specify the room name and the room image id as Intent extras.
* *
* @author Christophe Beyls * @author Christophe Beyls
*
*/ */
public class RoomImageDialogActivity extends Activity { public class RoomImageDialogActivity extends AppCompatActivity {
public static final String EXTRA_ROOM_NAME = "roomName"; public static final String EXTRA_ROOM_NAME = "roomName";
public static final String EXTRA_ROOM_IMAGE_RESOURCE_ID = "imageResId"; public static final String EXTRA_ROOM_IMAGE_RESOURCE_ID = "imageResId";
@ -25,6 +26,9 @@ public class RoomImageDialogActivity extends Activity {
ImageView imageView = new ImageView(this); ImageView imageView = new ImageView(this);
imageView.setImageResource(intent.getIntExtra(EXTRA_ROOM_IMAGE_RESOURCE_ID, 0)); imageView.setImageResource(intent.getIntExtra(EXTRA_ROOM_IMAGE_RESOURCE_ID, 0));
int padding = getResources().getDimensionPixelSize(R.dimen.content_margin);
imageView.setPadding(padding, padding, padding, padding);
setContentView(imageView); setContentView(imageView);
} }
} }

View file

@ -8,7 +8,7 @@ import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.view.MenuItemCompat; import android.support.v4.view.MenuItemCompat;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@ -17,7 +17,7 @@ import be.digitalia.fosdem.R;
import be.digitalia.fosdem.fragments.MessageDialogFragment; import be.digitalia.fosdem.fragments.MessageDialogFragment;
import be.digitalia.fosdem.fragments.SearchResultListFragment; import be.digitalia.fosdem.fragments.SearchResultListFragment;
public class SearchResultActivity extends ActionBarActivity { public class SearchResultActivity extends AppCompatActivity {
public static final int MIN_SEARCH_LENGTH = 3; public static final int MIN_SEARCH_LENGTH = 3;

View file

@ -1,12 +1,13 @@
package be.digitalia.fosdem.activities; package be.digitalia.fosdem.activities;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem; import android.view.MenuItem;
import be.digitalia.fosdem.R; import be.digitalia.fosdem.R;
import be.digitalia.fosdem.fragments.SettingsFragment; import be.digitalia.fosdem.fragments.SettingsFragment;
public class SettingsActivity extends ActionBarActivity { public class SettingsActivity extends AppCompatActivity {
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {

View file

@ -7,7 +7,7 @@ import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction; import android.support.v4.app.FragmentTransaction;
import android.support.v4.app.NavUtils; import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.ImageView; import android.widget.ImageView;
@ -27,7 +27,7 @@ import be.digitalia.fosdem.utils.NfcUtils.CreateNfcAppDataCallback;
* *
* @author Christophe Beyls * @author Christophe Beyls
*/ */
public class TrackScheduleActivity extends ActionBarActivity public class TrackScheduleActivity extends AppCompatActivity
implements TrackScheduleListFragment.Callbacks, implements TrackScheduleListFragment.Callbacks,
EventDetailsFragment.FloatingActionButtonProvider, EventDetailsFragment.FloatingActionButtonProvider,
CreateNfcAppDataCallback { CreateNfcAppDataCallback {

View file

@ -10,7 +10,7 @@ import android.support.v4.app.LoaderManager.LoaderCallbacks;
import android.support.v4.content.Loader; import android.support.v4.content.Loader;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AppCompatActivity;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
@ -31,7 +31,7 @@ import be.digitalia.fosdem.utils.NfcUtils.CreateNfcAppDataCallback;
* @author Christophe Beyls * @author Christophe Beyls
* *
*/ */
public class TrackScheduleEventActivity extends ActionBarActivity implements LoaderCallbacks<Cursor>, CreateNfcAppDataCallback { public class TrackScheduleEventActivity extends AppCompatActivity implements LoaderCallbacks<Cursor>, CreateNfcAppDataCallback {
public static final String EXTRA_DAY = "day"; public static final String EXTRA_DAY = "day";
public static final String EXTRA_TRACK = "track"; public static final String EXTRA_TRACK = "track";

View file

@ -1,12 +1,12 @@
package be.digitalia.fosdem.fragments; package be.digitalia.fosdem.fragments;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
/** /**
* A generic class to display a simple message in a dialog box. * A generic class to display a simple message in a dialog box.

View file

@ -1,13 +1,14 @@
package be.digitalia.fosdem.fragments; package be.digitalia.fosdem.fragments;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.DrawableRes; import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment; import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import android.widget.ImageView; import android.widget.ImageView;
import be.digitalia.fosdem.R; import be.digitalia.fosdem.R;
public class RoomImageDialogFragment extends DialogFragment { public class RoomImageDialogFragment extends DialogFragment {
@ -30,8 +31,12 @@ public class RoomImageDialogFragment extends DialogFragment {
ImageView imageView = new ImageView(getActivity()); ImageView imageView = new ImageView(getActivity());
imageView.setImageResource(args.getInt("imageResId")); imageView.setImageResource(args.getInt("imageResId"));
int padding = getResources().getDimensionPixelSize(R.dimen.content_margin);
imageView.setPadding(padding, padding, padding, padding);
Dialog dialog = new AlertDialog.Builder(getActivity()).setTitle(args.getString("roomName")).setView(imageView).create(); Dialog dialog = new AlertDialog.Builder(getActivity())
.setTitle(args.getString("roomName"))
.setView(imageView).create();
dialog.getWindow().getAttributes().windowAnimations = R.style.RoomImageDialogAnimations; dialog.getWindow().getAttributes().windowAnimations = R.style.RoomImageDialogAnimations;
return dialog; return dialog;
} }

View file

@ -26,7 +26,6 @@ import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.ContextThemeWrapper;
import android.view.Gravity; import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -65,7 +64,6 @@ public class SlidingTabLayout extends HorizontalScrollView {
private int mItemBackground; private int mItemBackground;
private ViewPager mViewPager; private ViewPager mViewPager;
private ViewPager.OnPageChangeListener mViewPagerPageChangeListener;
private TabListener mTabListener; private TabListener mTabListener;
@ -80,9 +78,7 @@ public class SlidingTabLayout extends HorizontalScrollView {
} }
public SlidingTabLayout(Context context, AttributeSet attrs, int defStyle) { public SlidingTabLayout(Context context, AttributeSet attrs, int defStyle) {
super(themifyContext(context, attrs, defStyle), attrs, defStyle); super(context, attrs, defStyle);
// Ensure we use the wrapped Context
context = getContext();
// Disable the Scroll Bar // Disable the Scroll Bar
setHorizontalScrollBarEnabled(false); setHorizontalScrollBarEnabled(false);
@ -149,17 +145,6 @@ public class SlidingTabLayout extends HorizontalScrollView {
setTextColor(ColorStateList.valueOf(color)); setTextColor(ColorStateList.valueOf(color));
} }
/**
* Set the {@link ViewPager.OnPageChangeListener}. When using {@link SlidingTabLayout} you are
* required to set any {@link ViewPager.OnPageChangeListener} through this method. This is so
* that the layout can update it's scroll position correctly.
*
* @see ViewPager#setOnPageChangeListener(ViewPager.OnPageChangeListener)
*/
public void setOnPageChangeListener(ViewPager.OnPageChangeListener listener) {
mViewPagerPageChangeListener = listener;
}
/** /**
* Set the custom layout to be inflated for the tab views. * Set the custom layout to be inflated for the tab views.
* *
@ -182,7 +167,7 @@ public class SlidingTabLayout extends HorizontalScrollView {
public void setViewPager(ViewPager viewPager) { public void setViewPager(ViewPager viewPager) {
mViewPager = viewPager; mViewPager = viewPager;
if (viewPager != null) { if (viewPager != null) {
viewPager.setOnPageChangeListener(new InternalViewPagerListener()); viewPager.addOnPageChangeListener(new InternalViewPagerListener());
} }
notifyDataSetChanged(); notifyDataSetChanged();
} }
@ -304,20 +289,11 @@ public class SlidingTabLayout extends HorizontalScrollView {
scrollToTab(position, positionOffset); scrollToTab(position, positionOffset);
if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageScrolled(position, positionOffset,
positionOffsetPixels);
}
} }
@Override @Override
public void onPageScrollStateChanged(int state) { public void onPageScrollStateChanged(int state) {
mScrollState = state; mScrollState = state;
if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageScrollStateChanged(state);
}
} }
@Override @Override
@ -329,9 +305,6 @@ public class SlidingTabLayout extends HorizontalScrollView {
for (int i = 0; i < mTabStrip.getChildCount(); i++) { for (int i = 0; i < mTabStrip.getChildCount(); i++) {
mTabStrip.getChildAt(i).setSelected(position == i); mTabStrip.getChildAt(i).setSelected(position == i);
} }
if (mViewPagerPageChangeListener != null) {
mViewPagerPageChangeListener.onPageSelected(position);
}
} }
} }
@ -356,18 +329,4 @@ public class SlidingTabLayout extends HorizontalScrollView {
} }
} }
} }
/**
* Allows us to emulate the {@code android:theme} attribute for devices before L.
*/
private static Context themifyContext(Context context, AttributeSet attrs, int defStyleAttr) {
final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.Toolbar,
defStyleAttr, 0);
final int themeId = a.getResourceId(R.styleable.Toolbar_theme, 0);
if (themeId != 0) {
context = new ContextThemeWrapper(context, themeId);
}
a.recycle();
return context;
}
} }

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true">
<shape>
<solid android:color="@color/fosdem_blue_translucent"/>
</shape>
</item>
<item android:drawable="@android:color/transparent"/>
</selector>

View file

@ -1,11 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <color
xmlns:android="http://schemas.android.com/apk/res/android"
<item android:state_activated="true"> android:color="@android:color/transparent"/>
<shape>
<solid android:color="@color/fosdem_blue_translucent"/>
</shape>
</item>
<item android:drawable="@android:color/transparent"/>
</selector>

View file

@ -3,16 +3,7 @@
<!-- Main theme --> <!-- Main theme -->
<style name="AppTheme" parent="Base.AppTheme"> <style name="AppTheme" parent="Base.AppTheme"/>
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
<style name="AlertDialogTheme" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:colorPrimary">@color/color_primary</item>
<item name="android:colorPrimaryDark">@color/color_primary_dark</item>
<item name="android:colorAccent">@color/color_accent</item>
<item name="android:textColorLink">?android:attr/colorAccent</item>
</style>
<!-- Styles --> <!-- Styles -->

View file

@ -5,7 +5,6 @@
<attr name="activatedBackgroundIndicator" format="reference"/> <attr name="activatedBackgroundIndicator" format="reference"/>
<declare-styleable name="SlidingTabLayout"> <declare-styleable name="SlidingTabLayout">
<attr name="theme"/>
<attr name="indicatorColor" format="color"/> <attr name="indicatorColor" format="color"/>
<attr name="indicatorHeight" format="reference|dimension"/> <attr name="indicatorHeight" format="reference|dimension"/>
<attr name="textColor" format="color"/> <attr name="textColor" format="color"/>

View file

@ -7,7 +7,7 @@
<item name="colorPrimary">@color/color_primary</item> <item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primary_dark</item> <item name="colorPrimaryDark">@color/color_primary_dark</item>
<item name="colorAccent">@color/color_accent</item> <item name="colorAccent">@color/color_accent</item>
<item name="android:textColorLink">?attr/colorAccent</item> <item name="alertDialogTheme">@style/AlertDialogTheme</item>
<item name="activatedBackgroundIndicator">@drawable/activated_background</item> <item name="activatedBackgroundIndicator">@drawable/activated_background</item>
</style> </style>
@ -22,12 +22,12 @@
<style name="AppTheme.NoActionBar"> <style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item> <item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item> <item name="windowNoTitle">true</item>
<!-- Allows the action mode icons to be shown on top of the Toolbar --> <!-- Allows the action mode icons to be shown on top of the Toolbar -->
<item name="windowActionModeOverlay">true</item> <item name="windowActionModeOverlay">true</item>
</style> </style>
<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog"> <style name="AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorPrimary">@color/color_primary</item> <item name="colorPrimary">@color/color_primary</item>
<item name="colorPrimaryDark">@color/color_primary_dark</item> <item name="colorPrimaryDark">@color/color_primary_dark</item>
<item name="colorAccent">@color/color_accent</item> <item name="colorAccent">@color/color_accent</item>
@ -71,7 +71,7 @@
</style> </style>
<style name="SlidingTabs"> <style name="SlidingTabs">
<item name="theme">@style/ThemeOverlay.AppCompat.Dark</item> <item name="android:theme">@style/ThemeOverlay.AppCompat.Dark</item>
<item name="android:background">?attr/colorPrimary</item> <item name="android:background">?attr/colorPrimary</item>
<item name="indicatorColor">@android:color/white</item> <item name="indicatorColor">@android:color/white</item>
<item name="textColor">@color/tab_text</item> <item name="textColor">@color/tab_text</item>