Skip to content

Instantly share code, notes, and snippets.

@twocity
twocity / SimpleHeaderDecoration.java
Last active February 7, 2022 12:22
An empty header (or footer) decoration for RecyclerView, since RecyclerView can't clipToPadding
import android.graphics.Rect;
import android.support.v7.widget.RecyclerView;
import android.view.View;
/**
* An empty header (or footer) decoration for RecyclerView, since RecyclerView can't clipToPadding
*/
public class SimpleHeaderDecoration extends RecyclerView.ItemDecoration {
private final int headerHeight;
private final int footerHeight;
@twocity
twocity / build.gradle
Last active December 11, 2021 09:13
android gradle change output apk file name.
android.applicationVariants.all { variant ->
println "*********" + variant.description + "**********";
def variants = variant.baseName.split("-");
def apkName = "ricebook-";
apkName += variants[0];
apkName += "-v" + android.defaultConfig.versionName;
if (!variant.zipAlign) {
apkName += "-unaligned";
}
if (variant.buildType.name == "release") {
@twocity
twocity / miao.gradle
Last active September 17, 2021 09:43
miao~
android.applicationVariants.all { variant ->
if (variant.install != null) {
variant.install.doLast {
exec {
commandLine "afplay", "your_sound.mp3"
}
}
}
}
public class RoundedDrawable extends Drawable {
private static final boolean USE_VIGNETTE = true;
private RectF mRect = new RectF();
private final Paint paint;
private final int mRadius;
private final BitmapShader bitmapShader;
public RoundedDrawable(Bitmap bitmap, int radius) {
bitmapShader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
paint = new Paint();
@twocity
twocity / transcribe.kts
Created March 12, 2018 02:16
Convert an audio file to txt through Google Speech API.
#!/usr/bin/env kscript
@file:DependsOn("com.squareup.okhttp3:okhttp:3.10.0")
@file:DependsOn("com.google.code.gson:gson:2.8.2")
@file:DependsOn("commons-cli:commons-cli:1.4")
import com.google.gson.Gson
import com.google.gson.JsonParser
import okhttp3.Interceptor
import okhttp3.Interceptor.Chain
@twocity
twocity / youtube-dl-mp3.py
Created March 5, 2018 03:51
download youtube audio through youtube-dl
from subprocess import call
import sys
cmd = 'youtube-dl --extract-audio --audio-format mp3 --audio-quality 0'.split(' ')
url = sys.argv[1]
cmd.append(url)
print('running {}'.format(' '.join(cmd)))
call(cmd)
@twocity
twocity / youtube-dl-mp3.py
Created March 5, 2018 03:51
download youtube audio through youtube-dl
from subprocess import call
import sys
cmd = 'youtube-dl --extract-audio --audio-format mp3 --audio-quality 0'.split(' ')
url = sys.argv[1]
cmd.append(url)
print('running {}'.format(' '.join(cmd)))
call(cmd)
@twocity
twocity / AVIFormat.kt
Created February 6, 2018 15:35
AVI format parser
import Header.RIFF
import okio.Buffer
import okio.BufferedSource
import okio.Okio
import java.io.File
class AVIFormat private constructor(val riff: ChunkGroup) {
val chunks by lazy { riff.spread() }
@twocity
twocity / compress.py
Created September 4, 2017 14:09
compress video through ffmpeg
#!/usr/bin/env python
import sys
import subprocess
import os
from os.path import basename
file = sys.argv[1]
command = ['ffmpeg', '-y']
command.extend(['-i', file])
@twocity
twocity / ff.stable.txt
Created August 10, 2017 04:51 — forked from 2bits/ff.stable.txt
ffmpeg-0.10.2 configure options
Usage: configure [options]
Options: [defaults in brackets after descriptions]
Standard options:
--help print this message
--logfile=FILE log tests and output to FILE [config.log]
--disable-logging do not log configure debug information
--prefix=PREFIX install in PREFIX []
--bindir=DIR install binaries in DIR [PREFIX/bin]
--datadir=DIR install data files in DIR [PREFIX/share/ffmpeg]