Record a video of your app
Developer options -> Check show touches
adb shell screenrecord /sdcard/video.mp4
adb pull /sdcard/video.mp4
package com.nabilhachicha.myapplication; | |
import android.app.Activity; | |
import android.os.Bundle; | |
import android.os.StrictMode; | |
import android.util.Log; | |
import com.squareup.okhttp.Cache; | |
import com.squareup.okhttp.Interceptor; | |
import com.squareup.okhttp.OkHttpClient; |
Every application ever written can be viewed as some sort of transformation on data. Data can come from different sources, such as a network or a file or user input or the Large Hadron Collider. It can come from many sources all at once to be merged and aggregated in interesting ways, and it can be produced into many different output sinks, such as a network or files or graphical user interfaces. You might produce your output all at once, as a big data dump at the end of the world (right before your program shuts down), or you might produce it more incrementally. Every application fits into this model.
The scalaz-stream project is an attempt to make it easy to construct, test and scale programs that fit within this model (which is to say, everything). It does this by providing an abstraction around a "stream" of data, which is really just this notion of some number of data being sequentially pulled out of some unspecified data source. On top of this abstraction, sca
Bitmap batmapBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.batman); | |
RoundedBitmapDrawable circularBitmapDrawable = RoundedBitmapDrawableFactory.create(getResources(), batmapBitmap); | |
// option 1 h/t [Chris Banes](https://chris.banes.me/) | |
circularBitmapDrawable.setCornerRadius(batmapBitmap.getWidth()); | |
// option 2 h/t @csorgod in the comments | |
circularBitmapDrawable.setCircular(true); | |
/* | |
* 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 |
package com.grasswire.grasswireurlshortener | |
import akka.actor.ActorSystem | |
import com.typesafe.config.ConfigFactory | |
import org.apache.commons.validator.routines.UrlValidator | |
import spray.http.StatusCodes | |
import spray.routing._ | |
import scala.util.Random | |
import scalaz.concurrent._ |
def overrideProviderAuthority(packageName, inFile, outFile) { | |
def xml = new XmlParser().parse(inFile) | |
xml.findAll{it.name() == 'string'}.each{item -> | |
if (!item.value().isEmpty() && item.value()[0] instanceof String && item.value()[0].startsWith(".res-auto")) { | |
item.value()[0] = item.value()[0].replace(".res-auto", packageName) | |
} | |
} | |
saveXML(outFile, xml) |
/** | |
* Sugar for has(int, isAssignableFrom(Class)). | |
* | |
* Example: onView(rootView).check(has(3, EditText.class); | |
*/ | |
public static ViewAssertion has(final int expectedCount, Class<? extends View> clazz) { | |
return has(expectedCount, isAssignableFrom(clazz)); | |
} | |
/** |
/* | |
* Copyright 2014 Google Inc. | |
* | |
* 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.cyrilmottier.android.citybikes.provider; | |
import android.net.Uri; | |
import com.cyrilmottier.android.avelov.BuildConfig; | |
/** | |
* @author Cyril Mottier | |
*/ | |
public class CityBikesContract { |