项目作者: shanmugasanthosh7

项目描述 :
Android's Utils and Simple Views in Kotlin
高级语言: Kotlin
项目地址: git://github.com/shanmugasanthosh7/Droidils.git
创建时间: 2018-05-01T04:29:22Z
项目社区:https://github.com/shanmugasanthosh7/Droidils

开源协议:Apache License 2.0

下载


Droidils Build Status

Android’s Simple Views and Utils in KOTLIN.

Download

  1. dependencies {
  2. implementation 'com.aptus:droidils:1.2.0'
  3. }

Views

Lets see the example,

In Xml,

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. app:layout_behavior="@string/appbar_scrolling_view_behavior"
  8. tools:context=".MainActivity"
  9. tools:showIn="@layout/activity_main">
  10. <com.aptus.droidils.views.HtmlTextView
  11. android:id="@+id/htmlTextView"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. app:layout_constraintBottom_toBottomOf="parent"
  15. app:layout_constraintLeft_toLeftOf="parent"
  16. app:layout_constraintRight_toRightOf="parent"
  17. app:layout_constraintTop_toTopOf="parent" ></com.aptus.droidils.views.HtmlTextView>
  18. </android.support.constraint.ConstraintLayout>

In Activity,

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val htmlTextView: HtmlTextView = findViewById(R.id.htmlTextView)
  7. htmlTextView.setHtmlText("<b>What</b> <i>the</i> <u>Html</u>")
  8. }
  9. }
  • VectorDrawableButton - which supports vector drawable in left,right,top and bottom position.
  • CheckableButton - checkable interface added.
  • EndlessRecyclerScrollListener - which is used for simple pagination or load more.

Droidils utils classes fully based on Kotlin Extension function. So, we can write code concise and avoid boilerplate.

Example,

Url actionview

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. //Here using kotlin Extension to avoid findViewById
  7. fab.setOnClickListener {
  8. urlActionView("http://www.example.com") // Open in browser.
  9. }
  10. }
  11. }

Parse String to Date

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val dateTime = "19-03-2018 09:40" // date in String
  7. val date = dateTime.toParseDateTime("dd-MM-yyyy hh:mm") // Convert into Date.
  8. }
  9. }

Format Date

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val dateTime = "19-03-2018 09:40" // date in String
  7. val date = dateTime.toParseDateTime("dd-MM-yyyy hh:mm") // Convert into Date.
  8. val formatDate = date.toFormatDateTime("dd MMM yyyy") // Date into String by given format
  9. }
  10. }

Check whether the date after or before from given date.

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val dateTime = "19-03-2018 09:40" // date in String
  7. val date = dateTime.toParseDateTime("dd-MM-yyyy hh:mm") // Convert into Date.
  8. val dateAfter = date.isAfter(Date()) // false
  9. val dateBefore = date.isBefore(date()) // true
  10. }
  11. }

Hide and Show Status Bar in simple way

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. fullScreen() // hide StatusBar
  7. fab.setOnClickListener {
  8. exitFullScreen()// Show StatusBar
  9. }
  10. }
  11. }

Change Status Bar Color

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. fab.setOnClickListener {
  7. changeStatusBarColor(R.color.blue)
  8. }
  9. }
  10. }

Json String to Object

Droidils uses Google’s GSON library

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val jsonString = "{ name: droidils, age: 25 }" // JSON String
  7. val jsonObjectSerialized = jsonString.toMappedObject<User>() // Serialized as Object
  8. }
  9. }

Json Object to String

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. val jsonObject = User("Droidils","25") // Object
  7. val jsonString = jsonObject.toJson() // Object to Json
  8. }
  9. }

View Visible,Invisible and Gone

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. fab.gone()// Hides view
  7. fab.invisible()// Invisible view
  8. fab.visible();// Show view
  9. }
  10. }

Create notification channel with simple notification

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. setSupportActionBar(toolbar)
  6. fab.setOnClickListener {
  7. val channelId = "com.aptus.test"
  8. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
  9. createNotificationChannel(channelId, "Test") // only for oreo version
  10. }
  11. getNotificationManager().notify(102,
  12. simpleNotification(channelId, "Droidils",
  13. "Simple Utils library"))
  14. }
  15. }
  16. }

Create Shortcut in simple way

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. fab.setOnClickListener {
  6. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
  7. val appShortCuts = SparseArray<AppShortCut>()
  8. val intents = arrayOf(Intent(Intent.ACTION_MAIN, Uri.EMPTY, this,
  9. MainActivity::class.java)
  10. .setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK),
  11. Intent("com.aptus.droidils.OPEN_SECOND"))
  12. // It's recommended more than 4 shortcut is not allowed and throw exception
  13. appShortCuts.append(0, AppShortCut("0",
  14. "Droidils 1", R.drawable.ic_notifications, intents))
  15. appShortCuts.append(1, AppShortCut("1",
  16. "Droidils 2", R.drawable.ic_notifications, intents))
  17. // Short label not more than 10 character and long label not more than 25 character
  18. // If it's exceeds exception will thrown.
  19. appShortCuts.append(2, AppShortCut("2",
  20. "Droidils 3", R.drawable.ic_notifications, intents,
  21. "Simple utils library", true))
  22. setShortCuts(buildShortCuts(appShortCuts))
  23. }
  24. }
  25. }
  26. }

EditText IME Action Listener

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. // we must to set inputType
  6. imeActionEdit.setImeActionListener { _, _ ->
  7. Toast.makeText(this, "Droidils Utils library", Toast.LENGTH_SHORT).show()
  8. true
  9. }
  10. }
  11. }

Start an activity with Action and Flags

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. // Start second activity
  6. goTo { buildIntent<SecondActivity>() }
  7. // Start second activity with action
  8. goTo { buildIntent<SecondActivity>("com.aptus.testAction") }
  9. // Start second activity with Flags
  10. goTo { buildIntent<SecondActivity>().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) }
  11. }
  12. }

Do log simply…;)

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. // Logging method
  6. logDebug<MainActivity>("Droidils makes code concise...!!!")
  7. logError<MainActivity>("Droidils, The Utils Library!!!...")
  8. }
  9. }

EditText TextWatcherListener

  1. class MainActivity : AppCompatActivity() {
  2. override fun onCreate(savedInstanceState: Bundle?) {
  3. super.onCreate(savedInstanceState)
  4. setContentView(R.layout.activity_main)
  5. // TextWatcher listener all three methods
  6. imeActionEdit.onTextWatcher({ s, start, count, after -> },
  7. { s, start, before, count -> }, { s -> })
  8. // TextWatcher listener before text change
  9. imeActionEdit.onBeforeTextChange { s, start, count, after -> }
  10. // TextWatcher listener on text change
  11. imeActionEdit.onTextChange { s, start, before, count -> }
  12. // TextWatcher listener after text change
  13. imeActionEdit.onAfterTextChange { s -> }
  14. }
  15. }

Added few simple views and utils classes more will be add soon. Explore and give suggestion to improve Droidils.

Licence

  1. Copyright 2018 Shanmugasanthosh
  2. Licensed under the Apache License, Version 2.0 (the "License");
  3. you may not use this file except in compliance with the License.
  4. You may obtain a copy of the License at
  5. http://www.apache.org/licenses/LICENSE-2.0
  6. Unless required by applicable law or agreed to in writing, software
  7. distributed under the License is distributed on an "AS IS" BASIS,
  8. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  9. See the License for the specific language governing permissions and
  10. limitations under the License.