(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"?> | |
| <manifest | |
| xmlns:android="http://schemas.android.com/apk/res/android" | |
| package="hzqtc.flowlayout" | |
| android:versionCode="1" | |
| android:versionName="1.0"> | |
| <uses-sdk | |
| android:minSdkVersion="14" | |
| android:targetSdkVersion="19"/> |
| git branch -m old_branch new_branch # Rename branch locally | |
| git push origin :old_branch # Delete the old branch | |
| git push --set-upstream origin new_branch # Push the new branch, set local branch to track the new remote |
| public class CircularProgressDrawable extends Drawable | |
| implements Animatable { | |
| private static final Interpolator ANGLE_INTERPOLATOR = new LinearInterpolator(); | |
| private static final Interpolator SWEEP_INTERPOLATOR = new DecelerateInterpolator(); | |
| private static final int ANGLE_ANIMATOR_DURATION = 2000; | |
| private static final int SWEEP_ANIMATOR_DURATION = 600; | |
| private static final int MIN_SWEEP_ANGLE = 30; | |
| private final RectF fBounds = new RectF(); |
(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.
| /* | |
| * Copyright (C) 2014 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 |
| package com.pascalwelsch.utils; | |
| import android.support.annotation.Nullable; | |
| import android.support.v7.util.DiffUtil; | |
| import android.support.v7.widget.RecyclerView; | |
| import java.util.ArrayList; | |
| import java.util.Collections; | |
| import java.util.Comparator; | |
| import java.util.List; |
| package be.digitalia.common.widgets; | |
| import android.annotation.SuppressLint; | |
| import android.annotation.TargetApi; | |
| import android.content.Context; | |
| import android.graphics.Rect; | |
| import android.os.Build; | |
| import android.support.v4.util.ObjectsCompat; | |
| import android.util.AttributeSet; | |
| import android.view.View; |
| /* | |
| * Copyright (C) 2014 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 |
| /** | |
| * Will return version from properties file and replace -SNAPSHOT by GIT commit hash | |
| * to recognize origin commit for the every build. | |
| */ | |
| project.ext.evalVersionName = { | |
| def ideBuild = project.properties['android.injected.invoked.from.ide'] | |
| if (ideBuild) { | |
| logger.info("IDE build"); | |
| return "dev" | |
| } else if (project.VERSION.toUpperCase().contains("SNAPSHOT")) { |