Skip to content

Instantly share code, notes, and snippets.

View ahmed3elshaer's full-sized avatar
🏊

AhmedElshaer ahmed3elshaer

🏊
View GitHub Profile
@ahmed3elshaer
ahmed3elshaer / MaterialYouDarkAnimatedGradient.kt
Created February 25, 2024 09:01
MaterialYouDarkAnimatedGradient
@Composable
fun AnimatedLoadingGradient(
) {
val primaryColor = MaterialTheme.colorScheme.secondary
val containerColor = MaterialTheme.colorScheme.tertiary
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
@ahmed3elshaer
ahmed3elshaer / MaterialYouLightAnimatedGradient.kt
Created February 25, 2024 09:00
MaterialYouLightAnimatedGradient
@Composable
fun AnimatedLoadingGradient(
) {
val primaryColor = MaterialTheme.colorScheme.onTertiaryContainer
val containerColor = MaterialTheme.colorScheme.primary
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
@ahmed3elshaer
ahmed3elshaer / GeminiAnimatedGradient.kt
Created February 25, 2024 08:59
GeminiAnimatedGradient
@Composable
fun AnimatedLoadingGradient(
) {
val geminiPrimaryColor = Color(0xFF2D2D32)
val geminiContainerColor = Color(0xFF235EC2)
Column(
modifier = Modifier
.fillMaxSize()
.padding(16.dp)
@ahmed3elshaer
ahmed3elshaer / AnimatedGradient.kt
Last active February 25, 2024 08:59
Loading Animation like Gemini in Jetpack Compose
fun Modifier.animatedGradient(
primaryColor: Color,
containerColor: Color
): Modifier = composed {
var size by remember { mutableStateOf(IntSize.Zero) }
val transition = rememberInfiniteTransition(label = "")
val colors = listOf(
primaryColor,
containerColor,
primaryColor
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
FeedCommentsViewModel().feedViewState.observe(viewLifecycleOwner, Observer { viewState ->
render(viewState)
})
}
private fun render(viewState: FeedCommentsViewState) {
viewState.apply {
renderLoading(feedDetailsState.isLoading)
@ahmed3elshaer
ahmed3elshaer / localsettings.gradle
Created May 5, 2020 12:18
Local modules examples
include ':ApiBaseModule', ':BaseModule', ':IdentityModule', ':TransactionsApiModule', ':StaticModule'
project(':ApiBaseModule').projectDir = new File('/Users/ahmedelshaer/Projects/Trella-Files/trella-apibasemodule-module/APIBase')
project(':BaseModule').projectDir = new File('/Users/ahmedelshaer/Projects/Trella-Files/trella-basemodule-module/base_module')
project(':IdentityModule').projectDir = new File('/Users/ahmedelshaer/Projects/Trella-Files/trella-identitiymodule-module/identity')
project(':TransactionsApiModule').projectDir = new File('/Users/ahmedelshaer/Projects/Trella-Files/trella-transactionsapimodule-module/transactionsApi')
project(':StaticModule').projectDir = new File('/Users/ahmedelshaer/Projects/Trella-Files/trella-staticmodule-module/staticModule')
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:cardCornerRadius="16dp"
android:padding="16dp"
android:layout_height="wrap_content">
<LinearLayout android:layout_width="match_parent"
android:layout_marginEnd="8dp"
fun getEventsInTimeRange(
beginTime: Long, endTime: Long, callback: (MutableList<CalenderEvent>) -> Unit
) {
if (primaryData == null) {
getPrimaryData {
performEventsQuery(beginTime, endTime, callback)
}
} else {
performEventsQuery(beginTime, endTime, callback)
}
private fun getEventsFromCursor(
cur: Cursor?, callback: (MutableList<CalenderEvent>) -> Unit
) {
val events = mutableListOf<CalenderEvent>()
cur?.let {
doAsync {
while (cur.moveToNext()) {
events.add(
CalenderEvent(
private fun queryCalenderProvider(
uri: Uri = CalendarContract.Calendars.CONTENT_URI,
eventProjection: Array<String>,
selection: String? = null,
selectionArgs: Array<String>? = null,
callback: (Cursor?) -> Unit
) {
if (ContextCompat.checkSelfPermission(