Description
Convenience extension methods for android's auto-generated /res folder R. class.
Basically everything in your res/ and /assets folder can be accessed via an extension function. Note: everything gets loaded with application context.
Android Resource Extensions alternatives and similar packages
Based on the "Resources" category.
Alternatively, view Android Resource Extensions alternatives based on common mentions on social networks and blogs.
-
Android Asset Studio
A set of web-based tools for generating graphics and other assets that would eventually be in an Android application's res/ directory. -
Android Tips & Tricks
:ballot_box_with_check: [Cheatsheet] Tips and tricks for Android Development -
Android Action Bar Style Generator
[DEPRECATED] Easily create a simple, attractive and seamless custom action bar style for your Android application -
Complete-Google-Map-API-Tutorial
Learn How to use Google Map API for Android from Basic to Advance with complete examples. -
Android Weekly
Gradle plugin that creates FindBugs reports for android projects -
Language_Time
A library that converts Time to its equivalent local languages starting with some basic Nigeria languages(Yoruba, Hausa, Igbo, Efik and English) -
Google Wear App
This is a tip calculator for Android Wear that uses speech recognition. -
How to Make Android Apps
Video tutorials by Derek Banas. -
Future Studio
Extensive Android tutorials on Retrofit, Picasso, Glide & Gson. -
Device Art Generator
Wraps app screenshots in real device artwork. -
Android Design in Action Video series
The video series by Android Design Team of Google. -
Android Design in Action slides
- The application that gives you access to the slides of the video series. -
Android DevBytes Video Series
It is the technical counterpart of Android Design in Action series. -
Developing for Android
A series of articles from Googler Chet Hasae and others, answering most commonly asked question: "What are some of the important rules to keep in mind when developing Android applications?". -
Android Hive Tutorials
Very good tutorials for beginners. -
Vogella Tutorials
Very good tutorials by Lars Vogel. -
Android UI design resources
Gives you wide variety of design resources form a Google Developer Expert in UI/UX.
WorkOS - The modern identity platform for B2B SaaS
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of Android Resource Extensions or a related project?
README
Android Resource Extensions
Convenience extension methods for android's auto-generated /res folder R. class.
Basically everything in your res/ and /assets folder can be accessed via an extension function. Note: everything gets loaded with current activity context, if that is not available it uses application context.
Features:
Values
- resBoolean
- resInt
- resLong
- resString
- resString(args)
- localizedString(locale)
- localizedResources(locale)
- quantityString
- quantityString(args)
- resColorLong
- resColor
- resDimension
- html
- html
- csv
- resXml
- resFraction
Arrays
- resIntArray
- resStringArray
- resTextArray
- resColorArray
- resColorIntArray
- resDrawableArray
- resDrawableIdArray
Ids
- resId
- resName
- resTypeName
- resPackageName
- resStringId
- resDrawableId
- resDrawableId((Exception)->Unit)
- resColorDrawable
- resGradientDrawable
Objects
- resDrawable
- colorDrawable
- resAnim
- resAnimator
- resFont
- resRaw
- resInterpolator
- resLayoutAnimation
- resTransition
Layout
- resLayout
- inflate
Screen
- dp
- px
- sp
- pt
- inches
- mm
- screenWidthDp
- screenHeightDp
- screenWidthPixels
- screenHeightPixels
Assets
- bytesFromAssets // thread-safe
- stringFromAssets
Misc
- isRightToLeft
- isTelephoneLink
- isMailToLink
ManifestPermissions
- isGranted // checks if granted, doesn't trigger request
How to use
val my_integer: Int = R.integer.my_integer.resInt
val my_long: Long = R.integer.my_long.resLong
val my_string: String = R.string.my_string.resString
val my_string_args: String = R.string.my_string_args.resString("ipsum")
val my_string_args_float: String = R.string.my_string_args_float.resString(2f)
val my_localized_string: String = R.string.my_localized_string.localizedString(Locale.GERMAN)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
val my_localized_resources: Resources = localizedResources(this, Locale.GERMAN)
}
val my_quantityString: String = R.plurals.my_quantityString.quantityString(2)
val my_quantityString_args: String = R.plurals.my_quantityString_args.quantityString(2, "total")
val my_boolean: Boolean = R.bool.my_boolean.resBoolean
val my_color_long: Long = R.color.my_color_long.resColorLong
val my_color: Int = R.color.my_color.resColor
val my_dimension: Float = R.dimen.my_dimension.resDimension
val my_string_html: Spanned = """<a href="https://www.google.com/">Google</a>""".html
val my_html: Spanned = R.string.my_html.html
val my_csv: List<String> = R.string.my_csv.csv
val my_xml: XmlResourceParser = R.xml.lorem_ipsum.resXml
// 0.10f
val my_fraction: Float = R.fraction.my_fraction.resFraction(2, 2)
val my_int_array: IntArray = R.array.my_int_array.resIntArray
val my_string_array: Array<String> = R.array.my_string_array.resStringArray
val my_character_array: Array<CharSequence> = R.array.my_string_array.resTextArray
/*ColorRes*/
val my_icons_array: List<Int> = R.array.my_colors.resColorArray
/*ColorInt*/
val my_icons_array_color_int: List<Int> = R.array.my_colors.resColorIntArray
/*@DrawableRes*/
val my_colors_array: List<Int> = R.array.my_icons.resDrawableIdArray
/*@Drawable*/
val my_colors_array_drawable: List<Drawable> = R.array.my_icons.resDrawableArray
@IdRes val my_id: Int = "my_id".resId
val my_res_name: String = R.integer.my_res_name.resName
val my_res_type_name: String = R.integer.my_res_type_name.resTypeName
val my_res_package_name: String = R.integer.my_res_package_name.resPackageName
@StringRes val my_res_string_id: Int = "my_res_string_id".resStringId { it.printStackTrace() }
@DrawableRes val my_res_drawable_id: Int = "ic_share".resDrawableId
@DrawableRes val my_res_drawable_id_with_error_handling: Int = "ic_share".resDrawableId { it.printStackTrace() }
val my_drawable: Drawable = R.drawable.ic_share.resDrawable
val my_anim: Animation = R.anim.grow.resAnim
val my_animator: Animator = R.animator.flip_animation.resAnimator
val my_font: Typeface = R.font.lato.resFont
val my_raw: InputStream = R.raw.my_raw.resRaw
val my_interpolator: Interpolator = android.R.interpolator.anticipate_overshoot.resInterpolator
val my_res_layout_animation_controller: LayoutAnimationController = R.anim.layout_animation.resLayoutAnimation
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val my_transition: Transition = android.R.transition.explode.resTransition
}
val my_layout: XmlResourceParser = R.layout.activity_main.resLayout
val my_inflated_layout: View = R.layout.activity_main.inflate(root)
val my_dp: Float = 16f.dp
val my_dp_int: Int = 16.dp
val my_px: Float = 200f.px
val my_px_int: Int = 200.px
val my_sp: Float = 14f.sp
val my_pt: Float = 14f.pt
val my_inches: Float = 14f.inches
val my_mm: Float = 14f.mm
val my_screen_width_dp: Int = screenWidthDp
val my_screen_height_dp: Int = screenHeightDp
val my_screen_width_pixels: Int = screenWidthPixels
val my_screen_height_pixels: Int = screenHeightPixels
val my_bytes_from_assets: ByteArray? = "my_text.json".bytesFromAssets()
val my_string_from_assets: String? = "my_text.json".stringFromAssets()
val my_device_is_rtl: Boolean = isRightToLeft
val my_string_is_a_telephone_link: Boolean = Uri.parse("""<a href="tel:491771789232">Google</a>""").isTelephoneLink
val my_string_is_a_mailto_link: Boolean = Uri.parse("""<a href="mailto:[email protected]">Google</a>""").isMailToLink
val locationPermission : Boolean = Manifest.permission.ACCESS_FINE_LOCATION.isGranted
How to install
To get a Git project into your build:
Step 1. Add the JitPack repository to your build file
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Step 2. Add the dependency
dependencies {
implementation "com.github.florent37:applicationprovider:1.0.0"
implementation 'com.github.kibotu:AndroidResourceExtensions:{latest}'
}
Notes
Follow me on Twitter: @wolkenschauer
Let me know what you think: [email protected]
Contributions welcome!
License
Copyright 2019 Jan Rabe
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
*Note that all licence references and agreements mentioned in the Android Resource Extensions README section above
are relevant to that project's source code only.