Skip to content

Instantly share code, notes, and snippets.

View ericksli's full-sized avatar

Eric Li ericksli

View GitHub Profile
@ericksli
ericksli / adb.md
Created July 26, 2019 03:53
Android ADB enable/disable animation

Disable animation

adb shell settings put global window_animation_scale 0
adb shell settings put global transition_animation_scale 0
adb shell settings put global animator_duration_scale 0

Enable animation

@ericksli
ericksli / android-default-datetime-format.md
Last active June 11, 2019 03:52
Android default date and time formats

Android Default Date and Time Formats

Sample Timestamps

Name Timestamp (millisecond) Human-readable form
Timestamp A 1557086889000 Monday, 6 May 2019 04:08:09 GMT+08:00
Timestamp B 1571984435000 Friday, 25 October 2019 14:20:35 GMT+08:00

12-hour Format

@ericksli
ericksli / Mail merge.csv
Last active April 13, 2019 15:50
Google Apps Script mail merge
Email Name Prize Sent By Sent At
test1@example.com Atlas Cantu Google Pixel 3
test2@example.com Keir James Huawei Mate 20 Pro
test3@example.com Rhianne Kendall Samsung Galaxy Note 9
test4@example.com Lillie-Rose Hahn Sony Xperia XZ3
test5@example.com Leyton Zamora LG G7 ThinQ
@ericksli
ericksli / latecert.js
Created February 10, 2019 09:31
Fill in the MTR late cert form usling puppeteer.
const puppeteer = require('puppeteer');
const readline = require('readline');
const sleep = require('util').promisify(setTimeout);
require('dotenv').config();
const EVENT_SELECTOR = 'select#ddlEvent';
const NAME_SELECTOR = 'input#username';
const EMAIL_SELECTOR = 'input#email';
const CAPTCHA_SELECTOR = 'input#captcha-form';
@ericksli
ericksli / DemoActivity.kt
Last active September 3, 2018 15:00
Simplify the creation of ViewModel #android #kotlin
class DemoActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewModel = viewModel(MyViewModel.Factory(application))
setContentView(R.layout.activity_demo)
}
}
@ericksli
ericksli / DividerItemDecoration.kt
Last active September 3, 2018 14:59
Draw bottom divider in RecyclerView with customisable show/hide divider and paddings for each item #android
import android.content.Context
import android.graphics.Canvas
import android.graphics.Paint
import android.graphics.RectF
import android.support.annotation.ColorRes
import android.support.v4.content.res.ResourcesCompat
import android.support.v4.view.ViewCompat
import android.support.v7.widget.RecyclerView
import org.jetbrains.anko.dip
@ericksli
ericksli / SharedPreferencesDelegates.kt
Last active September 3, 2018 14:58
Kotlin delegates for Android shared preferences #android #kotlin
import android.annotation.SuppressLint
import android.content.SharedPreferences
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
class BooleanSharedPreferencesDelegate(val preferences: SharedPreferences, val key: String, val defValue: Boolean, val writeSynchronously: Boolean = false) : ReadWriteProperty<Any, Boolean> {
override fun getValue(thisRef: Any, property: KProperty<*>): Boolean = preferences.getBoolean(key, defValue)
@SuppressLint("CommitPrefEdits")
@ericksli
ericksli / lr-station-platform.json
Last active September 2, 2017 14:36
Hong Kong MTR Light Rail stations and platforms
[
{
"code": "001",
"initial": "FEP",
"titleZh": "屯門碼頭",
"titleEn": "Tuen Mun Ferry Pier",
"latitude": 22.37284525,
"longitude": 113.9661371,
"fareZone": "1",
"platforms": [
@ericksli
ericksli / SemVer.kt
Last active June 18, 2017 13:29
Kotlin data object for Semantic Versioning (SemVer) 2.0.0 specification
/**
* Version number in [Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) specification (SemVer).
*
* @property major major version, increment it when you make incompatible API changes.
* @property minor minor version, increment it when you add functionality in a backwards-compatible manner.
* @property patch patch version, increment it when you make backwards-compatible bug fixes.
* @property preRelease pre-release version.
* @property buildMetadata build metadata.
*/
data class SemVer(
@ericksli
ericksli / doze.sh
Created April 12, 2017 08:25
Check device idle state
#!/bin/bash
while true
do
adb shell dumpsys deviceidle step
sleep 1
done