Skip to content

Instantly share code, notes, and snippets.

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier
import com.example.composedemo.ui.theme.ComposeDemoTheme
class MainActivity : ComponentActivity() {
import android.view.SurfaceHolder
import android.view.SurfaceView
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.viewinterop.AndroidView
@Composable
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.view.SurfaceHolder
// Represents an active ripple animation
data class Ripple(
val centerX: Float,
val centerY: Float,
var currentRadius: Float,
@akshat12
akshat12 / MyAccessibilityService.kt
Created September 19, 2025 02:57
MyAccessibilityService.kt - A Working Example
// MyAccessibilityService.kt
import android.accessibilityservice.AccessibilityService
import android.view.accessibility.AccessibilityEvent
import android.util.Log
class MyAccessibilityService : AccessibilityService() {
private val TAG = "MyAccessibilityService"
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
@akshat12
akshat12 / AndroidManifest.xml
Created September 19, 2025 02:54
AndroidManifest.xml for MyAccessiblityService
<application
... >
...
<service
android:name=".MyAccessibilityService"
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE"
android:exported="false">
<intent-filter>
@akshat12
akshat12 / accessibility_service_config.xml
Last active September 19, 2025 02:52
Service config for sample accessibility service: res/xml/accessibility_service_config.xml
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:description="@string/accessibility_service_description"
android:accessibilityEventTypes="typeWindowStateChanged"
android:packageNames="com.google.android.youtube, com.google.android.gm"
android:accessibilityFeedbackType="feedbackGeneric"
android:notificationTimeout="100"
android:canRetrieveWindowContent="true" />
@akshat12
akshat12 / MyAccessibilityService.kt
Created September 19, 2025 02:49
MyAccessibilityService.kt defines a basic implementation of an accessibility service
// MyAccessibilityService.kt
import android.accessibilityservice.AccessibilityService
import android.view.accessibility.AccessibilityEvent
import android.util.Log
class MyAccessibilityService : AccessibilityService() {
private val TAG = "MyAccessibilityService"
override fun onAccessibilityEvent(event: AccessibilityEvent?) {
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.dp
@Composable
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.layout.Placeable
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.layout.Measurable
@Composable
fun GenericConditionalLayout(
modifier: Modifier = Modifier,
@Composable
fun ConditionalColumnLayoutWithThreshold() {
BoxWithConstraints(modifier = Modifier.fillMaxSize()) {
// This '200.dp' is brittle and doesn't adapt to content changes!
if (maxHeight > 200.dp) {
Column {
Text("Top Element", Modifier.background(Color.Yellow).height(100.dp))
Text("Middle Element", Modifier.background(Color.Green).height(50.dp))
Text("Bottom Element", Modifier.background(Color.Blue).height(50.dp))
}