Skip to content

Instantly share code, notes, and snippets.

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

Piotr Prus PiotrPrus

🏠
Working from home
View GitHub Profile
@PiotrPrus
PiotrPrus / Params.kt
Created March 13, 2019 12:23
Params data class 1st version
data class Params(
val mainImageResId: Int,
val mainText: String,
val secondaryText: String,
val mainButtonText: String,
val secondaryButtonText: String
)
@PiotrPrus
PiotrPrus / Params.kt
Created March 13, 2019 12:33
Params with functions
data class Params(
val mainImageResId: Int,
val mainText: String,
val secondaryText: String,
val mainButtonText: String,
val secondaryButtonText: String,
val mainButtonFunction: () -> Unit,
val secondaryButtonFunction: () -> Unit
)
@PiotrPrus
PiotrPrus / Params.kt
Created March 13, 2019 12:51
Params with Serialized functions
@Parcelize
data class Params(
val mainImageResId: Int,
val mainText: String,
val secondaryText: String,
val mainButtonText: String,
val secondaryButtonText: String,
val mainButtonFunction: Serializable,
val secondaryButtonFunction: Serializable
) : Parcelable {
@PiotrPrus
PiotrPrus / StartActivity.kt
Created March 13, 2019 12:57
Function that starts first parameterized activity
private fun startFirstActivity() {
ParameterizedActivity.start(this, Params.create(
R.drawable.ic_success,
"Success",
"You finished registration process!",
"Cancel",
"OK",
{ context -> goBack(context) },
{ context -> Toast.makeText(context, "This is great success)", Toast.LENGTH_SHORT).show() }
))
@PiotrPrus
PiotrPrus / ParameterizedActivity.kt
Last active March 13, 2019 13:01
Companion object of Parameterized Activity
class ParameterizedActivity : AppCompatActivity() {
companion object {
const val INTENT_PARAMS = "INTENT_PARAMS"
fun start(context: Context, params: Params) {
val intent = Intent(context, ParameterizedActivity::class.java)
intent.putExtra(INTENT_PARAMS, params)
context.startActivity(intent)
}
@PiotrPrus
PiotrPrus / PreferencesModule.kt
Created May 30, 2019 21:48
Example of preferences module that I am using in project to inject preferences
val preferencesModule = module {
single { provideSettingsPreferences(androidApplication()) }
}
private const val PREFERENCES_FILE_KEY = "com.example.settings_preferences"
private fun provideSettingsPreferences(app: Application): SharedPreferences =
app.getSharedPreferences(PREFERENCES_FILE_KEY, Context.MODE_PRIVATE)
@PiotrPrus
PiotrPrus / PreferencesMultiModule.kt
Last active May 31, 2019 13:11
koin module with multiple shared preferences
val preferencesModule = module {
single(named("settingsPrefs")) { provideSettingsPreferences(androidApplication()) }
single(named("securePrefs")) { provideSecurePreferences(androidApplication()) }
}
private const val PREFERENCES_FILE_KEY = "com.example.settings_preferences"
private const val SECURE_PREFS_FILE_KEY = "com.example.secure_preferences"
private fun provideSettingsPreferences(app: Application): SharedPreferences =
app.getSharedPreferences(PREFERENCES_FILE_KEY, Context.MODE_PRIVATE)
@PiotrPrus
PiotrPrus / like_msg_layout.xml
Created August 16, 2019 21:34
layout scheme
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<data>
<variable
name="viewModel"
type="com.wgsa.wgsa.feature.likemsg.SendLikeMsgViewModel" />
</data>
@PiotrPrus
PiotrPrus / like_msg_scene
Created August 17, 2019 13:08
like msg scene that scale down by 5%
<?xml version="1.0" encoding="utf-8"?>
<MotionScene xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto">
<Transition
motion:constraintSetEnd="@id/endScene"
motion:constraintSetStart="@id/startScene"
motion:duration="600" />
<ConstraintSet android:id="@+id/startScene">
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:angle="90"
android:startColor="#f8c6da7b"
android:centerColor="#e600ad7b"
android:endColor="#99009897"
android:type="linear" />
<stroke android:width="10dp" android:color="#FFFFFF" />
<corners android:radius="10dp"/>