(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| package com.example.models; | |
| import android.database.ContentObserver; | |
| import android.database.Cursor; | |
| import android.os.Handler; | |
| import android.os.Looper; | |
| import java.io.Closeable; | |
| import java.util.concurrent.atomic.AtomicReference; |
| task robolectric(type: Test, dependsOn: assembleRelease) { | |
| testClassesDir = sourceSets.robolectric.output.classesDir | |
| android.sourceSets.main.java.srcDirs.each { dir -> | |
| project.getPlugins().getPlugin('android').prepareTaskMap.each { | |
| sourceSets.robolectric.compileClasspath += files(it.value.explodedDir.getAbsolutePath() + '/classes.jar') | |
| sourceSets.robolectric.runtimeClasspath += files(it.value.explodedDir.getAbsolutePath() + '/classes.jar') | |
| } |
| # gimpy mac thingy | |
| .DS_Store | |
| # IDEA Ignores | |
| *.iml | |
| *.ipr | |
| *.iws | |
| .idea/ | |
| # Local configuration file (sdk path, etc) |
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
| <?xml version="1.0" encoding="utf-8"?> | |
| <resources> | |
| <!-- google's material design colours from | |
| http://www.google.com/design/spec/style/color.html#color-ui-color-palette --> | |
| <!--reds--> | |
| <color name="md_red_50">#FFEBEE</color> | |
| <color name="md_red_100">#FFCDD2</color> | |
| <color name="md_red_200">#EF9A9A</color> |
| public class AccountAuthenticator extends AbstractAccountAuthenticator { | |
| private final Context context; | |
| @Inject @ClientId String clientId; | |
| @Inject @ClientSecret String clientSecret; | |
| @Inject ApiService apiService; | |
| public AccountAuthenticator(Context context) { | |
| super(context); |
| package org.paulbetts.shroom.core; | |
| import android.os.AsyncTask; | |
| import com.squareup.okhttp.*; | |
| import java.io.IOException; | |
| import java.io.InputStream; | |
| import java.io.UnsupportedEncodingException; | |
| import java.util.Arrays; |
| def toCamelCase(String string) { | |
| String result = "" | |
| string.findAll("[^\\W]+") { String word -> | |
| result += word.capitalize() | |
| } | |
| return result | |
| } | |
| afterEvaluate { project -> | |
| Configuration runtimeConfiguration = project.configurations.getByName('compile') |
| <!-- You can change the parent around to whatever you normally use --> | |
| <style name="DebugColors" parent="Theme.AppCompat"> | |
| <!-- System colors --> | |
| <item name="android:windowBackground">@color/__debugWindowBackground</item> | |
| <item name="android:colorPressedHighlight">#FF4400</item> | |
| <item name="android:colorLongPressedHighlight">#FF0044</item> | |
| <item name="android:colorFocusedHighlight">#44FF00</item> | |
| <item name="android:colorActivatedHighlight">#00FF44</item> |
| AppCompat-v7:21 provides a very useful way of dealing with pressed/focused/activated states maintaining backwards compatibility downto API-7, but there's a small issue (big for some) with the default selectableItemBackground: It uses some PNGs and/or default values for API<21. | |
| The main reason is that android drawable resource definitions (prior API 21) CANNOT use theme attributes at all, so there's no way of making something like: | |
| <shape android:shape="rectangle"> | |
| <solid android:color="?attr/colorControlHighlight" /> | |
| </shape> | |
| For this, I've put this simple mockup on how to give your app better drawables that the appcompat defaults. |