Skip to content

Instantly share code, notes, and snippets.

View Gnzlt's full-sized avatar

Gonzalo Toledano Gnzlt

View GitHub Profile
@Gnzlt
Gnzlt / GmsExtensions.kt
Created October 2, 2018 11:33
RxJava2 Single extension function to convert Google Play Service Task
package com.example
import com.google.android.gms.tasks.Task
import io.reactivex.Single
fun <TResult> Task<TResult>.toSingle(): Single<TResult> =
Single.create<TResult> { emitter ->
addOnSuccessListener { result -> emitter.onSuccess(result) }
addOnFailureListener { error -> emitter.onError(error) }
}
@Gnzlt
Gnzlt / PriceTextView.kt
Last active January 4, 2019 10:15
Android TextView formatted to show Currency values from a Float
package com.example
import android.content.Context
import android.support.v7.widget.AppCompatTextView
import android.util.AttributeSet
import java.text.DecimalFormat
import java.util.Currency
class PriceTextView(context: Context, attrs: AttributeSet?) : AppCompatTextView(context, attrs) {
@Gnzlt
Gnzlt / Localization.csv
Created January 10, 2019 14:16
Populele APK Spanish translation
We can make this file beautiful and searchable if this error is corrected: It looks like row 9 should actually have 4 columns, instead of 6. in line 8.
,chinese,English,
key1,独家记忆,Memoria exclusiva,
key2,im your's,Burbujeante,
key3,最后的更新,Swing de la infancia,
key4,Never Say Goodbye,Mejorando la vida,
key5,帮助,AYUDA,
key6,需要达到前一关通过才能解锁下一模式哦,Pasa el nivel actual para desbloquear la siguiente etapa,
key7,左,Izquierda,
key8,嗨你发现了吗,琴颈上的小灯点已经亮闪闪了\n对应着小手指的颜色,Ahora que el diapason esta encendido, intente sujetarlo con el dedo derecho marcado con diferentes colores. Rasguear lejos!,
key9,好棒_你已经正确的弹奏了C和弦/n很简单吧,快来试试下一个_,¡Gran trabajo! Asi es como tocas el acorde de C.,
@Gnzlt
Gnzlt / gourcevideo.sh
Created March 6, 2019 13:25
Gource video export command
#!/bin/bash
gource \
-s .03 \
-1280x720 \
--auto-skip-seconds .1 \
--multi-sampling \
--stop-at-end \
--key \
--highlight-users \
@Gnzlt
Gnzlt / ScrollAwareExtendedFabBehavior.kt
Last active July 9, 2019 11:58
Android CoordinatorLayout Scroll Aware ExtendedFloatingActionButton behavior
package com.example
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.view.ViewCompat
import androidx.core.view.isVisible
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
@Gnzlt
Gnzlt / RetryableDataSource.kt
Last active July 16, 2019 14:41
Android Arch Component Paging Retryable DataSource
package com.example
import androidx.paging.PositionalDataSource
abstract class RetryableDataSource : PositionalDataSource<String>() {
private var retryAction: (() -> Any)? = null
override fun loadRange(params: LoadRangeParams, callback: LoadRangeCallback<String>) {
try {
val result = listOf("Api result data")
@Gnzlt
Gnzlt / N2YO_postman.json
Created November 14, 2019 09:16
N2YO.com API Postman collection
{
"info": {
"_postman_id": "872a7bd5-c9f6-4b8a-ab70-4276340208f2",
"name": "N2YO",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Get TLE",
"request": {
@Gnzlt
Gnzlt / ViewExtensions.kt
Last active December 4, 2019 08:43
ViewStubProxy extension function to make the ViewStub visible or invisible
inline var ViewStubProxy.isVisible: Boolean
get() = isInflated && root.isVisible
set(value) {
if (isInflated) {
root.isVisible = value
} else {
if (value) {
viewStub?.inflate()
} else {
// already invisible
@Gnzlt
Gnzlt / DiffFragmentStateAdapter.kt
Last active September 6, 2023 23:14
FragmentStateAdapter with DiffUtil implementation for ViewPager2
package com.example
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.Lifecycle
import androidx.recyclerview.widget.AsyncListDiffer
import androidx.recyclerview.widget.DiffUtil
import androidx.viewpager2.adapter.FragmentStateAdapter
@Gnzlt
Gnzlt / goproquikconverter.sh
Created July 5, 2020 21:24
Bash script to modify videos metadata to use them in GoPro Quik desktop app
#!/bin/bash
# Based on https://riviera.org.uk/2018/10/23/importing-non-gopro-videos-into-gopro-quik/
for i in *.MP4; do ffmpeg -i "$i" -map_metadata -1 -codec copy -metadata:s handler="GoPro AVC encoder" -metadata:s handler_name=" GoPro AVC" "gopro-$i"; done