• Stars
    star
    291
  • Rank 139,969 (Top 3 %)
  • Language
  • License
    Apache License 2.0
  • Created about 3 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A curated android live templates to make your android development more fast🚀 and easy✨. Import all of them within a minute⌛
Star Badge

Poster

Star Badge Fork Badge Contributors Badge License Badge

Content 📓

What is live template? 😮

Live Templates are code snippets that you can insert into your code by typing their abbreviation and pressing tab. By using them, you can quickly and intelligently add frequently used code patterns and constructs to your code, letting the IDE do the tedious work for you.

Demo 💻

How to import all live templates

How to import all live templates in 1 minute? 💥

  1. Download AndroidLiveTemplates.zip file
  2. Then follow below video tutorial

How to import all live templates


CheatSheet 📄

Write Only ⌨️ You will get ✨
♦️ Adapters ♦️
 adapter list 
class $FILE_NAME$ : androidx.recyclerview.widget.ListAdapter<$TYPE$, $FILE_NAME$.$HOLDER_NAME$ViewHolder>(DiffCallback()) {

    override fun onCreateViewHolder(parent: android.view.ViewGroup, viewType: Int): $HOLDER_NAME$ViewHolder {
        val binding =
            $BINDING$.inflate(
                android.view.LayoutInflater.from(parent.context),
                parent,
                false
            )
        return $HOLDER_NAME$ViewHolder(binding)
    }

    override fun onBindViewHolder(holder: $HOLDER_NAME$ViewHolder, position: Int) {
        val currentItem = getItem(position)
    }

    inner class $HOLDER_NAME$ViewHolder(private val binding: $BINDING$) :
        androidx.recyclerview.widget.RecyclerView.ViewHolder(binding.root) {}

    class DiffCallback : androidx.recyclerview.widget.DiffUtil.ItemCallback<$TYPE$>() {
        override fun areItemsTheSame(oldItem: $TYPE$, newItem: $TYPE$) =
            oldItem.id == newItem.id

        override fun areContentsTheSame(oldItem: $TYPE$, newItem: $TYPE$) =
            oldItem == newItem
    }
}
 adapter normal 
  class $FILE_NAME$ : androidx.recyclerview.widget.RecyclerView.Adapter<$FILE_NAME$.MyViewHolder>() {

    class MyViewHolder(itemView: android.view.View) : androidx.recyclerview.widget.RecyclerView.ViewHolder(itemView) {}

    override fun onCreateViewHolder(parent: android.view.ViewGroup, viewType: Int): MyViewHolder {
        return MyViewHolder(
            android.view.LayoutInflater.from(parent.context).inflate(R.layout.$LAYOUT$, parent, false)
        )
    }

    override fun getItemCount(): Int {
        TODO("Not yet implemented")
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        TODO("Not yet implemented")
    }
}
♦️ View Binding ♦️
 binding activity 
class $FILE_NAME$ : androidx.appcompat.app.AppCompatActivity() {

    private lateinit var binding: $BINDING_LAYOUT$

    override fun onCreate(savedInstanceState: android.os.Bundle?) {
        super.onCreate(savedInstanceState)
        binding = $BINDING_LAYOUT$.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
    }
}
 binding fragment 
class $FILE_NAME$ : androidx.fragment.app.Fragment() {

    private var _binding: $BINDING_LAYOUT$? = null
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: android.view.LayoutInflater,
        container: android.view.ViewGroup?,
        savedInstanceState: android.os.Bundle?
    ): android.view.View {
        _binding = $BINDING_LAYOUT$.inflate(inflater, container, false)
        return binding.root
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }
}
♦️ Retrofit Library ♦️
 retrofit instance 
class $FILE_NAME$ {

    companion object {

        private val retrofit by lazy {
            val logging = okhttp3.logging.HttpLoggingInterceptor()
            logging.setLevel(okhttp3.logging.HttpLoggingInterceptor.Level.$TYPE$)
            val client = okhttp3.OkHttpClient.Builder()
                .addInterceptor(logging)
                .build()
            retrofit2.Retrofit.Builder()
                .baseUrl($BASE_URL$)
                .addConverterFactory(retrofit2.converter.gson.GsonConverterFactory.create())
                .client(client)
                .build()
        }

        val api by lazy {
            retrofit.create($API_NAME$::class.java)
        }
    }
    
}
♦️ Room Database ♦️
 room db 
@androidx.room.Database(
    entities = [$TABLE_NAME$::class],
    version = 1,
    exportSchema = false
)
@androidx.room.TypeConverters($CONVERTER_NAME$::class)
abstract class $FILE_NAME$ : androidx.room.RoomDatabase() {

    abstract fun $DAO_NAME$(): $DAO_TYPE$
    
}
 room db with singleton 
@androidx.room.Database(
    entities = [$TABLE_NAME$::class],
    version = 1,
    exportSchema = false
)
@androidx.room.TypeConverters($CONVERTER_NAME$::class)
abstract class $FILE_NAME$ : androidx.room.RoomDatabase() {

    abstract fun $DAO_NAME$(): $DAO_TYPE$

    companion object {
        @Volatile
        private var INSTANCE: $FILE_NAME$? = null
        private val LOCK = Any()

        fun getDatabase(context: android.content.Context): $FILE_NAME$ =
            INSTANCE ?: synchronized(LOCK) {
                INSTANCE
                    ?: buildDatabase(context).also { INSTANCE = it }
            }

        private fun buildDatabase(context: android.content.Context) =
            androidx.room.Room.databaseBuilder(
                context.applicationContext,
                $FILE_NAME$::class.java, "$DB_NAME$.db"
            ).build()
    }
}
 room dao 
import androidx.room.*

@Dao
interface $FILE_NAME$ {

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insert$TABLE_NAME$($VAR_NAME$: $TABLE_NAME$)
    
    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertAll$TABLE_NAME$(vararg $VAR_NAME$s: $TABLE_NAME$)

    @Update
    suspend fun update($VAR_NAME$: $TABLE_NAME$)

    @Delete
    suspend fun delete($VAR_NAME$: $TABLE_NAME$)

    @Query("SELECT * FROM $VAR_NAME$")
    fun getAll$TABLE_NAME$(): List<$TABLE_NAME$>

}
 room converter for list of string 
// List<String> <-> String
@androidx.room.TypeConverter
fun fromList(list: List<String>): String {
    return com.google.gson.Gson().toJson(list)
}

@androidx.room.TypeConverter
fun toList(string: String): List<String> {
    return com.google.gson.Gson().fromJson(string, object : com.google.gson.reflect.TypeToken<List<String>>() {}.type)
}
 room converter for date 
// Date <-> Long
@androidx.room.TypeConverter
fun fromTimestamp(value: Long?): java.util.Date? {
    return value?.let { java.util.Date(it) }
}

@androidx.room.TypeConverter
fun dateToTimestamp(date: java.util.Date?): Long? {
    return date?.time?.toLong()
}
 room converter for bitmap 
// Bitmap <-> ByteArray
@androidx.room.TypeConverter
fun fromBitmap(bitmap: android.graphics.Bitmap): ByteArray {
    val outputStream = java.io.ByteArrayOutputStream()
    bitmap.compress(android.graphics.Bitmap.CompressFormat.PNG, 100, outputStream)
    return outputStream.toByteArray()
}

@androidx.room.TypeConverter
fun toBitmap(byteArray: ByteArray): android.graphics.Bitmap {
    return android.graphics.BitmapFactory.decodeByteArray(byteArray, 0, byteArray.size)
}
♦️ Dependency Injection ♦️
 di hilt app 
@dagger.hilt.android.HiltAndroidApp
class $FILE_NAME$ : android.app.Application() {
}
 di retrofit module 
@javax.inject.Singleton
@dagger.Provides
fun provideRetrofit(): retrofit2.Retrofit =
    retrofit2.Retrofit.Builder()
        .baseUrl($BASE_URL$)
        .addConverterFactory(retrofit2.converter.gson.GsonConverterFactory.create())
        .build()

@javax.inject.Singleton
@dagger.Provides
fun provide$API_NAME$(retrofit: retrofit2.Retrofit): $API$ =
    retrofit.create($API$::class.java)
 di room module 
@javax.inject.Singleton
@dagger.Provides
fun provideDatabase(
    @dagger.hilt.android.qualifiers.ApplicationContext context: android.content.Context
) = androidx.room.Room.databaseBuilder(
    context,
    $DATABASE_CLASS$::class.java,
    "$DATABASE_NAME$"
).build()

@javax.inject.Singleton
@dagger.Provides
fun provideDao(database: $DATABASE_CLASS$) = database.$METHOD$
♦️ Drawable ♦️
 shape bubble 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:bottomRightRadius="10dp"
        android:radius="40dp" />

    <stroke
        android:width="1dp"
        android:color="@color/$STROKE_COLOR$" />

    <size
        android:width="50dp"
        android:height="50dp" />
        
    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 shape halfcircle 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners
        android:topLeftRadius="60dp"
        android:topRightRadius="60dp" />

    <size
        android:width="120dp"
        android:height="60dp" />

    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 shape line 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line">

    <stroke
        android:width="3dp"
        android:color="@color/$STROKE_COLOR$" />

    <size android:height="1dp" />

</shape>
 shape oval 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">

    <stroke
        android:width="3dp"
        android:color="@color/$STROKE_COLOR$" />

    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 shape ractangle 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <corners android:radius="10dp" />

    <stroke
        android:width="3dp"
        android:color="@color/$STROKE_COLOR$" />

    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 shape ring 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:thickness="5dp"
    android:useLevel="false">
    
    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 shape round 
<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:innerRadius="0dp"
    android:shape="ring"
    android:thickness="100dp"
    android:useLevel="false">

    <solid android:color="@color/$SOLID_COLOR$" />

</shape>
 state list 
<?xml version="1.0" encoding="utf-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/$DRAWABLE1$" android:state_pressed="true" /> <!-- pressed -->
    <item android:drawable="@drawable/$DRAWABLE2$" android:state_focused="true" /> <!-- focused -->
    <item android:drawable="@drawable/$DRAWABLE3$" android:state_hovered="true" /> <!-- hovered -->
    <item android:drawable="@drawable/$DRAWABLE4$" android:state_selected="true" /> <!-- selected -->
    <item android:drawable="@drawable/$DRAWABLE5$" android:state_checkable="true" /> <!-- checkable -->
    <item android:drawable="@drawable/$DRAWABLE6$" android:state_checked="true" /> <!-- checked -->
    <item android:drawable="@drawable/$DRAWABLE7$" android:state_enabled="true" /> <!-- enabled -->
    <item android:drawable="@drawable/$DRAWABLE8$" android:state_activated="true" /> <!-- activated -->
    <item android:drawable="@drawable/$DRAWABLE9$" android:state_window_focused="true" /> <!-- window_focused -->
    <item android:drawable="@drawable/$DRAWABLE$" /> <!-- default -->
</selector>
♦️ XML ♦️
 center_horizontal 
      app:layout_constraintEnd_toStartOf="@+id/$VIEWIDSTART$"
      app:layout_constraintStart_toEndOf="@+id/$VIEWIDEND$"
 center_horizontal_parent 
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent"
 center_parent 
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintLeft_toLeftOf="parent"
      app:layout_constraintRight_toRightOf="parent"
      app:layout_constraintTop_toTopOf="parent"
 center_vartical 
      app:layout_constraintBottom_toTopOf="@+id/$VIEWIDTOP$"
      app:layout_constraintTop_toBottomOf="@+id/$VIEWIDBOTTOM$"
 center_vartical_parent 
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintTop_toTopOf="parent"
 xml_menu 
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/menu_$ID1$"
        android:icon="@drawable/$ICON1$"
        android:title="@string/$TITLE1$"
        app:showAsAction="$ACTION1$" />

    <item
        android:id="@+id/menu_$ID2$"
        android:icon="@drawable/$ICON2$"
        android:title="@string/$TITLE2$"
        app:showAsAction="$ACTION2$" />
        
    <item
        android:id="@+id/menu_$ID3$"
        android:icon="@drawable/$ICON3$"
        android:title="@string/$TITLE3$"
        app:showAsAction="$ACTION3$" />
        
        <item
        android:id="@+id/menu_$ID4$"
        android:icon="@drawable/$ICON4$"
        android:title="@string/$TITLE4$"
        app:showAsAction="$ACTION4$" />
        
    <item
        android:id="@+id/menu_$ID5$"
        android:icon="@drawable/$ICON5$"
        android:title="@string/$TITLE5$"
        app:showAsAction="$ACTION5$" />
        
</menu>
♦️ Util ♦️
 util resource 
sealed class Resource<T>(val data: T?, val message: String?) {
    class Success<T>(data: T) : Resource<T>(data, null)
    class Error<T>(message: String) : Resource<T>(null, message)
}
 util toast 
fun android.content.Context.toast(message: CharSequence) =
    android.widget.Toast.makeText(this, message, android.widget.Toast.$LENGTH$).show()
♦️ Dependencies ♦️
 view and data binding 
buildFeatures {
    viewBinding true
    dataBinding true
}
 view binding 
buildFeatures {
    viewBinding true
}

How to create your own live templates? 💡


Official documentation

Live template variables

Suggest me


If you have any suggestion or you want to add any other templates than ping me on Instagram Badge

Contribute

Contributions are always welcome!😇 Please read the contribution guidelines first.

More Repositories

1

Soda-and-Softy-App

Soda & Softy App
Kotlin
18
star
2

Note-Sharing-App

Using this app you can save your own app and then share it with others via e-mail id.
Kotlin
17
star
3

WhatsApp-Direct

You can directly send whatsapp message without saving a number and many more.
Java
16
star
4

My-Paint-App

Using this app you can draw anything and also save it in your phone.
Kotlin
9
star
5

Note-With-Images-App

Note saver app which can save images as well with customization.
Kotlin
9
star
6

InstaData

Using this library you can get any Insta Profile Information.
Kotlin
8
star
7

VideoCallingApp

Video + Voice calling, Chat, Large and Small Image Sharing + Cool UI + SCREEN SHARING FEATURE using WebRTC and Firebase
Kotlin
6
star
8

Neomorphic-Login-UI

Kotlin
5
star
9

agamkoradiya

My Portfolio
5
star
10

Insta-Profile-Details-In-Flutter

get all details about any insta profile.
Dart
5
star
11

IP-Information

Java
4
star
12

SignUp-Password-Validation-In-Kotlin

Kotlin
4
star
13

MemeLover

Meme maker and informer
Kotlin
4
star
14

Business-Card-Sharing-Saver-App

Make your own business card and then share it.
Kotlin
4
star
15

Custom-Bottom-Navigation-View

Custom bottom navigation bar with custom Floating Action Button
Kotlin
3
star
16

COVID19-live-updates-app

This data is valid for INDIA. We are fetching data from DEPARTMENT OF HEALTH & FAMILY WELFARE's website.
Java
3
star
17

Ex-warranty

Kotlin
2
star
18

Weather-info.

Java
2
star
19

CleanArchitectureNoteApp

Note Saver App in Jetpack Compose with beautiful UI + Clean architecture + MVVM + ROOM + Testing
Kotlin
2
star
20

SaveAMinuteLauncher

My Dream Launcher
Kotlin
1
star
21

Stock-market

code file of Stock market
1
star