Skip to content

Instantly share code, notes, and snippets.

View akexorcist's full-sized avatar
🔥

Akexorcist akexorcist

🔥
View GitHub Profile
@akexorcist
akexorcist / Constraint.kt
Created August 5, 2022 14:37
Kotlin utility for condition-based data selection with dynamic condition supports
interface Constraint<INPUT, OUTPUT> {
suspend fun invoke(input: INPUT): OUTPUT?
}
abstract class SatisfyConstraint<INPUT, OUTPUT> : Constraint<INPUT, OUTPUT> {
abstract suspend fun isSatisfied(input: INPUT): Boolean
abstract suspend fun process(input: INPUT): OUTPUT
override suspend fun invoke(input: INPUT): OUTPUT? =
@akexorcist
akexorcist / android.yml
Created April 3, 2021 20:06
Android CI Workflow for GitHub Actions - Unit Test Job
#...
jobs:
test:
name: Unit Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: set up JDK 1.8
uses: actions/setup-java@v1
with:
@akexorcist
akexorcist / write_text_file.java
Last active March 5, 2022 14:02
ฟังก์ชันเขียนไฟล์ txt ธรรมดาๆ โดยมีแบบเขียนทับหรือเขียนต่อจากเดิม
public void appendTextFile(String text) {
File file = new File("sdcard/text.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
@akexorcist
akexorcist / MaterialButtonGroup.kt
Last active October 26, 2021 18:05
Material Button Group for Material Button in Android
package com.akexorcist.materialdesign
import android.content.Context
import androidx.core.view.MarginLayoutParamsCompat
import androidx.core.view.ViewCompat
import android.util.AttributeSet
import android.util.Log
import android.view.View
import android.widget.LinearLayout
import com.google.android.material.shape.AbsoluteCornerSize
@akexorcist
akexorcist / GroupFocusableEditText.kt
Last active October 8, 2021 00:14
Custom Android UI for prevent the view behind on-screen keyboard when edit text is focused
import android.content.Context
import android.graphics.Point
import android.graphics.Rect
import android.util.AttributeSet
import android.view.View
import androidx.appcompat.widget.AppCompatEditText
class GroupFocusableEditText : AppCompatEditText {
private var parentRect = Rect()
@akexorcist
akexorcist / QuadGradientView.kt
Created October 5, 2021 15:44
Gradient color view for HSL color picker
class QuadGradientView : FrameLayout {
private var currentHue = 0f
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
setWillNotDraw(false)
}
constructor(context: Context) : super(context) {
setWillNotDraw(false)
}
@akexorcist
akexorcist / view_constraint_layout_issue.xml
Last active April 28, 2021 13:21
Mystery issue in ConstraintLayout 2.0.2
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="16dp"
android:paddingTop="16dp"
android:paddingEnd="16dp">
<androidx.constraintlayout.widget.ConstraintLayout
@akexorcist
akexorcist / android.yml
Last active April 5, 2021 07:49
Android CI Workflow for GitHub Actions - Run UI Test on Firebase Test Lab
# ...
jobs:
test:
# ...
apk:
# ...
firebase:
name: Run UI tests with Firebase Test Lab
needs: apk
@akexorcist
akexorcist / android.yml
Last active April 3, 2021 20:33
Android CI Workflow for GitHub Actions - Build APK for UI Test
# ...
jobs:
test:
# ...
apk:
name: Generate APK
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
@akexorcist
akexorcist / android.yml
Created April 3, 2021 19:42
Android CI Workflow for GitHub Actions - Initial
name: Android CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
test: