Skip to content

Instantly share code, notes, and snippets.

View mrolcsi's full-sized avatar

Roland Matusinka mrolcsi

View GitHub Profile

textAppearanceHeadline1

textAppearanceHeadline2

textAppearanceHeadline3

textAppearanceHeadline4

@mrolcsi
mrolcsi / TestApplication.kt
Created September 3, 2019 07:09
[WIP] Instrumented tests with Dagger injection
// https://android.jlelse.eu/how-to-inject-mock-dependencies-into-android-components-using-dagger-androidinjector-e274c8f6a9a6
class TestApplication : Application(), HasSupportFragmentInjector {
@Inject
lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
override fun supportFragmentInjector() = fragmentInjector
}
@mrolcsi
mrolcsi / ActivitiesModule.kt
Last active July 5, 2021 00:25
Dagger 2 cheatsheet
@Module
abstract class ActivitiesModule {
@ContributesAndroidInjector(modules = [MainActivityModule::class])
abstract fun contributeMainActivity(): MainActivity
// Other activities come here, same as above.
}
@mrolcsi
mrolcsi / InMemorySharedPreferences.kt
Created May 22, 2019 13:05
An Android `SharedPreferences` and `Editor` implementation that uses a HashMap to store values.
import android.content.SharedPreferences
class InMemorySharedPreferences : SharedPreferences, SharedPreferences.Editor {
private val preferences = HashMap<String, Any?>()
override fun contains(key: String): Boolean {
return preferences.contains(key)
}
Use case (ldpi) mdpi hdpi xhdpi xxhdpi xxxhdpi Play Store
Scaling Factors 0.75 1 1.5 2 3 4
Launcher 48px 72px 96px 144px 192px 512px
Preference 27px 36px 54px 72px 108px 144px
BottomNavigation Notification / StatusBar / Overflow Menu 24px 36px 48px 72px 96px
Notification Action / ActionBar 24px 32px 48px 64px 96px 128px
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
CursorLoader loader = new CursorLoader(getActivity());
if (args != null) {
loader.setProjection(args.getStringArray("projection"));
loader.setSelection(args.getString("selection"));
loader.setSelectionArgs(args.getStringArray("selectionArgs"));
loader.setSortOrder(args.getString("sortOrder"));
}
@mrolcsi
mrolcsi / CursorAdapterBase.java
Last active October 8, 2015 07:57
Cursor support for not-cursor adapters
public class CursorAdapter extends AnyAdapter {
private int mCount;
private Cursor mCursor;
private boolean mDataValid;
private DataSetObserver mDataSetObserver;
public CursorAdapter(Cursor cursor){
super();
mCursor = cursor;
@mrolcsi
mrolcsi / Version code and name generation using Gradle
Last active June 21, 2020 13:44
Version code and name generation using Gradle
ext.makeVersionCode = { ->
try {
def code = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', 'HEAD', '--count'
standardOutput = code
}
return Integer.parseInt(code.toString().trim())
}
catch (ignored) {
@mrolcsi
mrolcsi / Version code and version name generation using Ant
Last active August 29, 2015 14:15
Generate version code and version name for AndroidManifest.xml based on commit history.
<?xml version="1.0" encoding="UTF-8"?>
<project name="git-revision">
<!-- Set your own path if needed -->
<property name="git.path">C:\Program Files (x86)\Git\bin\git.exe</property>
<property name="manifest.path">AndroidManifest.xml</property>
<!-- Generate version code only. Useful if no tags are present yet. -->
<target name="version-code">
<exec executable="${git.path}" outputproperty="version.code">
<arg value="rev-list" />