Skip to content

Instantly share code, notes, and snippets.

View Tonnie-Dev's full-sized avatar
🏠
Working from home

Tonnie Tonnie-Dev

🏠
Working from home
View GitHub Profile
@Tonnie-Dev
Tonnie-Dev / ScanOverlay.kt
Created September 27, 2025 08:46
Scan Overlay with Camera Corner Handles and Punch Hole
package com.tonyxlab.qrcraft.presentation.screens.scan.components
import androidx.compose.foundation.Canvas
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
@Tonnie-Dev
Tonnie-Dev / CameraPreview.kt
Created September 25, 2025 06:08
QR Analysis Flow
package com.tonyxlab.qrcraft.presentation.screens.scan.components
import android.view.ViewGroup
import androidx.annotation.OptIn
import androidx.camera.camera2.interop.ExperimentalCamera2Interop
import androidx.camera.core.Camera
import androidx.camera.core.CameraSelector
import androidx.camera.core.FocusMeteringAction
import androidx.camera.core.ImageAnalysis
import androidx.camera.core.Preview
@Tonnie-Dev
Tonnie-Dev / ScanOverlay.kt
Created September 18, 2025 16:29
A Jetpack Compose scan overlay for QR/Barcode UI
@Composable
fun ScanOverlay(
modifier: Modifier = Modifier,
hint: String
) {
val scrimColor = MaterialTheme.colorScheme.scrim.copy(alpha = 0.65f)
Box(modifier = modifier) {
Canvas(
@Tonnie-Dev
Tonnie-Dev / ExtendedFabButton.kt
Created July 29, 2025 06:04
Custom ExtendedFabButton on compose
@Composable
fun ExtendedFabButton(
uiState: EditorUiState,
onEvent: (EditorUiEvent) -> Unit,
modifier: Modifier = Modifier
) {
Row(
modifier = modifier
.clip(MaterialTheme.shapes.large)
.background(MaterialTheme.colorScheme.surface)
@Composable
private fun DrawingsCounter(
count: Int,
modifier: Modifier = Modifier
) {
Box(
modifier = modifier
.padding(start = MaterialTheme.spacing.spaceTen * 2)
.wrapContentSize()
defaultConfig {
applicationId = "com.uxstate.instantscore"
minSdk = 21
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary = true
@Tonnie-Dev
Tonnie-Dev / java.java
Created August 3, 2018 09:49
Sending Local Broadcast
/*sending local broadcast*/
Intent broadcastIntent = new Intent("custom-intent");
LocalBroadcastManager.getInstance(context).sendBroadcast(broadcastIntent);
@Tonnie-Dev
Tonnie-Dev / java.java
Created August 3, 2018 09:45
inflating XML Layout
/*inflating xml layout*/
LayoutInflater layoutInflater = LayoutInflater.from(MainActivity.this);
layoutInflater.inflate(R.layout.activity_main,parent, false);
@Tonnie-Dev
Tonnie-Dev / java.java
Created August 3, 2018 09:43
dynamic TextView
/*creating a dynamic textview*/
TextView textView = new TextView(MainActivity.this);
@Tonnie-Dev
Tonnie-Dev / java.java
Created August 3, 2018 09:31
internal File Path
File file = new File(context.getFilesDir(), filename);