Skip to content

Instantly share code, notes, and snippets.

View Pulimet's full-sized avatar
🏠
Working from home

Alexey Korolev Pulimet

🏠
Working from home
View GitHub Profile
// Short way to collect StateFlow on coroutine when Activity Started.
// Useful when you need to collect one StateFlow, but could be used for many.
fun <T> StateFlow<T>.collectIt(lifecycleOwner: LifecycleOwner, function: (T) -> Unit) {
lifecycleOwner.lifecycleScope.launch {
lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
collect {
function.invoke(it)
}
}
}
@Pulimet
Pulimet / proguard-rules.pro
Last active June 15, 2020 18:29
MyLog Library Article 4
# Removes all the logging functions
-assumenosideeffects class net.alexandroid.utils.mylogkt.MyLogKtKt { *; }
# Removes only logD() and logV() function
-assumenosideeffects class net.alexandroid.utils.mylogkt.MyLogKtKt {
public static *** logD$default(...);
public static *** logV$default(...);
}
@Pulimet
Pulimet / SetParamsFromLocalProperties.kt
Last active June 15, 2020 18:30
MyLog Library Article 3
private fun setParamsFromLocalProperties() {
MyLogKt.isThreadNameVisible = BuildConfig.isThreadNameVisible
MyLogKt.isTimeVisible = BuildConfig.isTimeVisible
MyLogKt.isPackageNameVisible = BuildConfig.isPackageNameVisible
MyLogKt.isClassNameVisible = BuildConfig.isClassNameVisible
MyLogKt.isMethodNameVisible = BuildConfig.isMethodNameVisible
MyLogKt.isSpacingEnabled = BuildConfig.isSpacingEnabled
MyLogKt.isLengthShouldWrap = BuildConfig.isLengthShouldWrap
MyLogKt.classNameLength = BuildConfig.classNameLength
MyLogKt.methodNameLength = BuildConfig.methodNameLength
@Pulimet
Pulimet / build.gradle
Last active June 15, 2020 18:30
MyLog Library Article 2
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply from: 'logger.gradle'
@Pulimet
Pulimet / logger.gradle
Last active June 15, 2020 18:30
MyLog Library Article
android {
Properties properties = new Properties()
if (project.rootProject.file("local.properties").exists()) {
properties.load(project.rootProject.file("local.properties").newDataInputStream())
}
defaultConfig {
buildConfigField "boolean", "isThreadNameVisible", properties.getProperty("logger.isThreadNameVisible", "false")
buildConfigField "boolean", "isTimeVisible", properties.getProperty("logger.isTimeVisible","false")
buildConfigField "boolean", "isPackageNameVisible", properties.getProperty("logger.isPackageNameVisible", "false")
@Pulimet
Pulimet / NavComponent.kt
Last active December 26, 2019 17:37
Navigation component + ToolBar + Drawer (Navigation icon click behavior and animation fix)
private var navController: NavController? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setNavigationAndToolBar()
}
private fun setNavigationAndToolBar() {
setSupportActionBar(toolbar)
@Pulimet
Pulimet / GDPR_Countries_List.txt
Created November 19, 2018 12:14
GDPR Countries 2 Letter Country Code
private String gdprCounries[] = new String[]{
"US", //United States
"UM", //United States Minor Outlying Islands
"AT", //Austria
"BE", //Belgium
"BG", //Bulgaria
"HR", //Croatia
"CY", //Cyprus
"CZ", //Czech Republic
"DK", //Denmark
# Gradle files
.gradle/
# Intellij
.idea/
*.iml
# Build
build/
public class DashTestActivity extends AppCompatActivity {
public static final String DASH_SAMPLE = "http://www.bok.net/dash/tears_of_steel/cleartext/stream.mpd";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dash_test);
SimpleExoPlayerView exoPlayerView = findViewById(R.id.exoPlayerView);
@Pulimet
Pulimet / OkHttpHelper
Created September 14, 2017 11:49
OkHttpClient - Real request and response headers log
public class OkHttpHelper {
public static final String TAG = "OkHttpHelper";
public static final boolean SHOW_NETWORK_LOGS = true;
public static OkHttpClient getOkHttpClient() {
int cacheSize = 10 * 1024 * 1024; // 10 MB
Cache cache = new Cache(getCacheDir(), cacheSize);
return new OkHttpClient.Builder()
.addInterceptor(applicationInterceptor)