Extensions for Kotlin. Use the power of Kotlin to make your code smaller and beautiful.
Extensions for Kotlin. Use the power of Kotlin to make your code smaller and beautiful. |
---|
Add following line of code to your module(app) level gradle file
implementation 'com.robertlevonyan.components:AndroidKEx:2.0.0'
<dependency>
<groupId>com.robertlevonyan.components</groupId>
<artifactId>AndroidKEx</artifactId>
<version>2.0.0</version>
<type>pom</type>
</dependency>
// This extensions are also work in Activities, Fragments, Dialogs and DialogFragments
val myColor = color(R.color.my_color_res) // get any color from your recources
val myString = string(R.string.my_string_res) // get any String from your recources
val myDimen = dimen(R.dimen.my_dimen_res) // get any dimension value from your recources as Float
val myDimenInt = dimenInt(R.dimen.my_dimen_res) // get any dimension value from your recources as Int
val myInt = int(R.dimen.my_int_res) // get any int value from your recources
val myFont = font(R.dimen.my_font_res) // get any font value from your recources
val myStringArray = stringArray(R.array.my_string_array_res) // get any string array from your recources
val myIntArray = intArray(R.array.my_int_array_res) // get any int array from your recources
val myDrawable = drawable(R.drawable.my_drawable_name) // get any drawable from your recources
val myDrawable = drawable("my_drawable_name", "com.my.app") // get any drawable from your recources by String name
// Show toast with context, second parameter is optional, default value is Toast.LENGTH_SHORT
toast("Some message", Toast.LENGTH_LONG)
toast(R.string.message_res)
/* Replace a fragment in container, optional parameters
addToBackStack (default value is false)
backStackName (default value is "")
inAnimationRes (default value is 0)
outAnimationRes (default value is 0)
*/
replaceFragment(fragment, R.id.container)
/* Add a fragment in container, optional parameters
addToBackStack (default value is false)
backStackName (default value is "")
inAnimationRes (default value is 0)
outAnimationRes (default value is 0)
*/
addFragment(fragment, R.id.container)
/* Start new activity, optional parameters
extras (default value is Bundle())
overrideTransitions (default value is false)
enterAnimation (default value is 0)
exitAnimation (default value is 0)
*/
startActivity(activityToOpen)
/* Start new activity for result, optional parameters
extras (default value is Bundle())
overrideTransitions (default value is false)
enterAnimation (default value is 0)
exitAnimation (default value is 0)
*/
startActivityForResult(activityToOpen, requestCode)
/* Start new activity with transitions, optional parameter
extras (default value is Bundle())
*/
startActivityWithTransitions(activityToOpen, options)
/* Start new activity for result with transitions, optional parameter
extras (default value is Bundle())
*/
startActivityForResultWithTransitions(activityToOpen, requestCode, options)
/* Start new activity for result with transitions, optional parameter
requestCode (default value is 0)
extras (default value is Bundle())
*/
startActivityFromFragmentWithTransitions(activityToOpen, fragmentFrom, options)
/* Start new activity for result with transitions, optional parameter
extras (default value is Bundle())
*/
startActivityFromFragmentWithResult(activityToOpen, fragmentFrom, requestCode)
// Pop fragment in back stack
popFragment()
popFragment(name, flags)
popFragment(id, flags)
//Remove fragment
removeFragment(fragment)
removeFragmentByTag(tag)
removeFragmentById(R.id.my_fragment_id)
// Works on API19+
makeTranslucentStatusBar()
// Works on API23+
lightStatusBar()
// Works on API19+, removes the previous
makeNormalStatusBar()
// Works on API19+
makeTranslucentNavigationBar()
// Works on API26+
lightNavigation()
// Works on API19+, removes the previous
makeNormalNavigationBar()
/* Start new activity for result from fragment, optional parameters
extras (default value is Bundle())
overrideTransitions (default value is false)
enterAnimation (default value is 0)
exitAnimation (default value is 0)
*/
startActivityForResult(activityToOpen, requestCode)
/* Start new activity for result with transitions, optional parameter
extras (default value is Bundle())
*/
startActivityFromFragmentWithResult(activityToOpen, fragmentFrom, requestCode)
// Pop fragment in back stack
popFragment()
popFragment(name, flags)
popFragment(id, flags)
//Remove fragment
removeFragment(fragment)
removeFragmentByTag(tag)
removeFragmentById(R.id.my_fragment_id)
val animator = ValueAnimator.ofFloat(1f, 10f)
animator.onStart { ... }
animator.onEnd { ... }
animator.onCancel { ... }
animator.onRepeat { ... }
animator.onResume { ... } // API 19+
animator.onPause { ... } // API 19+
animator.addListener(
{ /* onStart */},
{ /* onEnd */},
{ /* onCancel */},
{ /* onRepeat */},
)
animator.addPauseListener(
{ /* onResume */ },
{ /* onPause */ }
)
val transition = Explode()
transition.onTransitionStart { ... }
transition.onTransitionEnd { ... }
transition.onTransitionResume { ... }
transition.onTransitionPause { ... }
transition.onTransitionCancel { ... }
transition.addListener(
{ /* onTransitionStart */ },
{ /* onTransitionEnd */ },
{ /* onTransitionResume */ },
{ /* onTransitionPause */ },
{ /* onTransitionCancel */ }
)
val list = ...
val randomItem = list.randomItem() // Get random item from any List
val calendar = ...
calendar.getDayOfWeek()
calendar.getDayOfMonth()
calendar.getDayOfWeekInMonth()
calendar.getDayOfYear()
calendar.getWeekOfMonth()
calendar.getHourOfDay()
calendar.getYear()
calendar.getHour()
calendar.getMinute()
calendar.getSecond()
calendar.getMillisecond()
uri.realPath(context)
string.toUri()
file.toUri()
file.copyInputStreamToFile(inputStream)
val bitmap = ...
bitmap.rotate(degrees)
bitmap.toUriJpeg(context, title, description)
bitmap.toUriPng(context, title, description)
bitmap.toUriWebp(context, title, description)
bitmap.makeCircle()
bitmap.toDrawable(context)
uri.toBitmap(context)
val drawable = ...
drawable.toBitmap()
uri.toDrawable(context)
val imageView = ...
imageView set R.drawable.image_res
imageView set drawable
imageView set bitmap
imageView set icon // API 23+
imageView set uri
val editText = ...
editText.afterTextChanged { editable -> ... }
editText.beforTextChanged { charSequence, start, count, after -> ... }
editText.onTextChanged { charSequence, start, before, count -> ... }
editText.focus() // focus on this EditText
editText.requestFocusAndKeyboard() // focus and open keyboard
editText.clearFocusAndKeyboard() // remove focus and close keyboard
val textView = ...
textView set R.string.some_text_resource
textView set someString
textView set someSpannable
val view = ...
view.dismissKeyboard()
/* Create snackbar on view, optional parameters
duration (default value is Snackbar.LENGTH_SHORT)
actionName (default value is ")
actionTextColor (default value is 0)
action (default value is {})
*/
view.snackbar(someStringMessage)
/*Animate different properties of view, optional parameters
duration (default value is 300)
repeatCount (default value is 0)
repeatMode (default value is 0)
*/
view.animateTranslationX(floatArrayOf( ... ))
view.animateTranslationY(floatArrayOf( ... ))
view.animateTranslationZ(floatArrayOf( ... )) // API 21+
view.animateScaleX(floatArrayOf( ... ))
view.animateScaleY(floatArrayOf( ... ))
view.animateAlpha(floatArrayOf( ... ))
view.animateRotation(floatArrayOf( ... ))
view.animateRotationX(floatArrayOf( ... ))
view.animateRotationY(floatArrayOf( ... ))
view.animateX(floatArrayOf( ... ))
view.animateY(floatArrayOf( ... ))
view.animateZ(floatArrayOf( ... )) // API 21+
val animator = view.translationXAnimator(floatArrayOf( ... ))
val animator = view.translationYAnimator(floatArrayOf( ... ))
val animator = view.translationZAnimator(floatArrayOf( ... )) // API 21+
val animator = view.scaleXAnimator(floatArrayOf( ... ))
val animator = view.scaleYAnimator(floatArrayOf( ... ))
val animator = view.alphaAnimator(floatArrayOf( ... ))
val animator = view.rotationAnimator(floatArrayOf( ... ))
val animator = view.rotationXAnimator(floatArrayOf( ... ))
val animator = view.rotationYAnimator(floatArrayOf( ... ))
val animator = view.xAnimator(floatArrayOf( ... ))
val animator = view.yAnimator(floatArrayOf( ... ))
val animator = view.zAnimator(floatArrayOf( ... )) // API 21+
view width 150 // set view width
view hesght 100 // set view height
view visible flase // show or hide view
val linearLayout = ... // or some other ViewGroup
linearLayout inflate R.layout.some_layout_to_inflate
linearLayout.forEach { childView -> }
linearLayout.forEachIndexed { childView, index -> }
linearLayout.isEmpty()
linearLayout.isNotEmpty()
val progressBar = ...
progressBar.loaderColor(colorInt)
val checkBox = ... // or some other compund button
checkBox.onChecked { view, isChecked -> ... }
val bottomSheetBehavior = ...
bottomSheetBehavior.onSlide { bottomSheetView, slideOffset -> ... }
bottomSheetBehavior.onStateChanged { bottomSheetView, newState -> ... }
//Creating a spinner with single function
val spinner = ...
spinner.create(
R.layout.spinner_item,
R.id.text_view_id,
items, // array or mutable list
onItemSelected = { item, postion -> ... }
)
//Creating an AutoCompleteTextView with single function
val autoCompleteTextView = ...
autoCompleteTextView.create(
R.layout.auto_complete_text_item,
R.id.text_view_id,
items, // array or mutable list
onItemSelected = { textString, postion -> ... }
)
//Creating a ListView with single function
val listView = ...
listView.create(
R.layout.list_item,
items, // array or mutable list
creator = { item, position -> ... }, // write to list binding logic inside this lambda
itemClick = { item, position -> ... },
itemLongClick = { item, position -> ... }
)
//Creating a RecyclerView with single function
val recyclerView = ...
recyclerView.create(
R.layout.recycler_list_item,
items, // array or mutable list
linearLayoutManager, // or some other layout manager
creator = { item, position -> ... }, // write to list binding logic inside this lambda
itemClick = { item, position -> ... },
itemLongClick = { item, position -> ... },
onScrollTop = { ... },
onScrollBottom = { ... }
)
//Creating a typed RecyclerView with single function
recyclerView.createTypedList(
mapOf(type1 to R.layout.type1, ...),
items, // array or mutable list
linearLayoutManager, // or some other layout manager
itemTypes = { position -> ... } // declare types of items
creator = { item, position, type -> ... }, // write to list binding logic inside this lambda
itemClick = { item, position -> ... },
itemLongClick = { item, position -> ... },
onScrollTop = { ... },
onScrollBottom = { ... }
)
recyclerView.addItem(item)
recyclerView.updateItem(item, position)
recyclerView.removeItem(position)
//Creating a ViewPager with single function
val viewPager = ...
viewPager.createFragmentPager(
items, // array or mutable list of Fragments
supportFragmentManager
)
viewPager.onPageScrollStateChanged { state -> ... }
viewPager.onPageScrolled { position, positionOffset, positionOffsetPixels -> ... }
viewPager.onPageSelected { position -> ... }