Skip to content

Instantly share code, notes, and snippets.

View Popalay's full-sized avatar
🇺🇦

Denys Nykyforov Popalay

🇺🇦
View GitHub Profile
Moved to https://google.github.io/accompanist/insets/
@eugene-krivobokov
eugene-krivobokov / Android studio tips.md
Last active December 17, 2021 12:35
Android Studio recipes

Как убедиться что стало лучше?

Используй Performance testing plugin.

Опиши сценарий и проверяй на нем.

Проверь версию AS

Android Studio | Check for updates

@rharter
rharter / InjectableActivityTestRule.kt
Last active December 6, 2021 12:07
Test Rule that allows you to use Dagger Android's automatic lifecycle based injection without making your Application class `open`, or overriding it in tests.
package com.pixite.pigment.testing
import android.app.Activity
import android.app.Application
import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.FragmentManager
@ArthurNagy
ArthurNagy / RoundedBottomSheetDialogFragment.kt
Last active May 10, 2024 09:22
Rounded modal bottom sheet as seen in new Google products(Tasks, News, etc.), described in this article: https://medium.com/halcyon-mobile/implementing-googles-refreshed-modal-bottom-sheet-4e76cb5de65b
package com.your.package
import android.app.Dialog
import android.os.Bundle
import com.your.package.R
import com.google.android.material.bottomsheet.BottomSheetDialog
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
/**
* BottomSheetDialog fragment that uses a custom
@Augusent
Augusent / TicketsPresenter.java
Last active December 30, 2017 17:33
MVI large reducer
public class TicketsPresenter extends BasePresenter<TicketsView, TicketsModel> {
private final DisplayErrorUsecase displayErrorUsecase;
private final LoadTicketsPageUsecase loadTicketsPageUsecase;
private final ArchiveTicketUsecase archiveTicketUsecase;
private final RenewTicketUsecase renewTicketUsecase;
private final DeleteTicketUsecase deleteTicketUsecase;
private final DeleteAllArchivedTicketsUsecase deleteAllArchivedTicketsUsecase;
@elizarov
elizarov / Example.kt
Last active September 21, 2019 16:15
// https://akarnokd.blogspot.ru/2017/09/rxjava-vs-kotlin-coroutines-quick-look.html
import kotlinx.coroutines.experimental.*
suspend fun f1(i: Int): Int {
Thread.sleep(if (i != 2) 2000L else 200L)
return 1
}
suspend fun f2(i: Int): Int {
Thread.sleep(if (i != 2) 2000L else 200L)
@chrisbanes
chrisbanes / KotterKnife.kt
Last active February 7, 2021 15:25
LifecycleAware KotterKnife
package kotterknife
import android.app.Activity
import android.app.Dialog
import android.app.DialogFragment
import android.app.Fragment
import android.arch.lifecycle.Lifecycle
import android.arch.lifecycle.LifecycleObserver
import android.arch.lifecycle.LifecycleOwner
import android.arch.lifecycle.OnLifecycleEvent
/* Attributes
<declare-styleable name="DateTimePickerView">
<attr name="timeHourOfDay" format="integer"/>
<attr name="timeMinute" format="integer"/>
<attr name="timeFormat" format="string"/>
<attr name="timeType" format="enum">
<enum name="time" value="0"/>
<enum name="date" value="1"/>
</attr>
@d4rkc0de
d4rkc0de / Exclude the status bar and navigation bar from the window's default exit enter shared element transition
Created February 9, 2017 10:47
Exclude the status bar and navigation bar from the window's default exit enter shared element transition
inside onCreate() :
Transition fade = new Fade();
fade.excludeTarget(android.R.id.statusBarBackground, true);
fade.excludeTarget(android.R.id.navigationBarBackground, true);
getWindow().setEnterTransition(fade);
or via xml :
<?xml version="1.0" encoding="utf-8"?>
#!/bin/sh
# Copy templates to Android Studio in default location
TMP_PATH=`pwd`
TEMPLATES_PATH="/Applications/Android Studio.app/Contents/plugins/android/lib/templates/other"
DIRS=`find $TMP_PATH -type d -maxdepth 1 -not -name '.*' -not -path $TMP_PATH`
for f in $DIRS