This test rule is now in the 'test-rules' support repository. Use that one!
https://developer.android.com/reference/android/support/test/rule/ActivityTestRule.html
| import android.util.Log; | |
| import com.squareup.leakcanary.AnalysisResult; | |
| import com.squareup.leakcanary.DisplayLeakService; | |
| import com.squareup.leakcanary.HeapDump; | |
| import retrofit.RestAdapter; | |
| import retrofit.RetrofitError; | |
| import retrofit.http.Multipart; | |
| import retrofit.http.POST; | |
| import retrofit.http.Part; | |
| import retrofit.mime.TypedFile; |
| package org.adw.library.commonwidgets.recyclerviews; | |
| import android.content.Context; | |
| import android.os.Handler; | |
| import android.support.v7.widget.LinearLayoutManager; | |
| import android.support.v7.widget.RecyclerView; | |
| import android.view.View; | |
| /** | |
| * WARNING!!! |
| def installAll = tasks.create('installAll') | |
| installAll.description = 'Install all applications.' | |
| android.applicationVariants.all { variant -> | |
| installAll.dependsOn(variant.install) | |
| // Ensure we end up in the same group as the other install tasks. | |
| installAll.group = variant.install.group | |
| } |
| <?xml version="1.0" encoding="utf-8"?> | |
| <!-- | |
| Copyright (C) 2015 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 |
This test rule is now in the 'test-rules' support repository. Use that one!
https://developer.android.com/reference/android/support/test/rule/ActivityTestRule.html
| /* | |
| * Copyright 2014 Chris Banes | |
| * | |
| * 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 |
| import android.support.v7.widget.LinearLayoutManager; | |
| import android.support.v7.widget.RecyclerView; | |
| public abstract class EndlessRecyclerOnScrollListener extends RecyclerView.OnScrollListener { | |
| public static String TAG = EndlessRecyclerOnScrollListener.class.getSimpleName(); | |
| private int previousTotal = 0; // The total number of items in the dataset after the last load | |
| private boolean loading = true; // True if we are still waiting for the last set of data to load. | |
| private int visibleThreshold = 5; // The minimum amount of items to have below your current scroll position before loading more. | |
| int firstVisibleItem, visibleItemCount, totalItemCount; |
| apply plugin: 'android-sdk-manager' | |
| apply plugin: 'com.android.application' | |
| apply plugin: 'hugo' | |
| apply plugin: 'crashlytics' | |
| def versionMajor = 1 | |
| def versionMinor = 7 | |
| def versionPatch = 0 | |
| def versionBuild = 0 // bump for dogfood builds, public betas, etc. |
| package com.aracem.utils.animations.pagetransformation; | |
| import org.jetbrains.annotations.NotNull; | |
| import android.support.v4.view.ViewPager; | |
| import android.view.View; | |
| import java.util.ArrayList; | |
| import java.util.List; |
(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.