All Projects → pranavpandey → Dynamic Support

pranavpandey / Dynamic Support

Licence: apache-2.0
A complete library to build Android apps with a built-in theme engine.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Dynamic Support

Smartmaterialspinner
The powerful android spinner library for your application
Stars: ✭ 108 (-50.46%)
Mutual labels:  library, material-design, color
Kivymd
Set of widgets for Kivy inspired by Google's Material Design.
Stars: ✭ 107 (-50.92%)
Mutual labels:  library, material-design, app
Bubble Navigation
🎉 [Android Library] A light-weight library to easily make beautiful Navigation Bar with ton of 🎨 customization option.
Stars: ✭ 1,537 (+605.05%)
Mutual labels:  library, material-design, widget
Pickr
🎨 Flat, simple, multi-themed, responsive and hackable Color-Picker library. No dependencies, no jQuery. Compatible with all CSS Frameworks e.g. Bootstrap, Materialize. Supports alpha channel, rgba, hsla, hsva and more!
Stars: ✭ 3,759 (+1624.31%)
Mutual labels:  material-design, widget, color
Awesome Wanandroid
⚡致力于打造一款极致体验的 http://www.wanandroid.com/ 客户端,知识和美是可以并存的哦QAQn(*≧▽≦*)n
Stars: ✭ 2,525 (+1058.26%)
Mutual labels:  material-design, app
Material Bottomnavigation
Bottom Navigation widget component inspired by the Google Material Design Guidelines at https://www.google.com/design/spec/components/bottom-navigation.html
Stars: ✭ 1,375 (+530.73%)
Mutual labels:  material-design, widget
Folding Cell
📃 FoldingCell is an expanding content cell with animation made by @Ramotion
Stars: ✭ 10,035 (+4503.21%)
Mutual labels:  library, material-design
Kite
🪁 Android Resources Wrapper Library
Stars: ✭ 127 (-41.74%)
Mutual labels:  library, color
Evntouchiddemo
🆔 iOS fingerprint login process implementation
Stars: ✭ 98 (-55.05%)
Mutual labels:  app, widget
Brainphaser
Android Quiz App (Spaced Repetition) made with Material Design; features categories, statistics and different question modes
Stars: ✭ 117 (-46.33%)
Mutual labels:  material-design, app
Todayx
🌈Flutter App:🎊「今日份的X」(每天推荐一个:图片、诗歌、名言、音乐、乐评、高等数学、两种配色、化学方程式、Github Repo、知乎问题、文章)
Stars: ✭ 128 (-41.28%)
Mutual labels:  material-design, app
Overflow Pager Indicator
Simple paging indicator widget with pager dataset ovewflow effect à la Instagram behavior
Stars: ✭ 136 (-37.61%)
Mutual labels:  library, widget
Animated Tab Bar
RAMAnimatedTabBarController is a Swift UI module library for adding animation to iOS tabbar items and icons. iOS library made by @Ramotion
Stars: ✭ 10,904 (+4901.83%)
Mutual labels:  library, material-design
Xam.plugin.simpleappintro
Just a nice and simple AppIntro for your Xamarin Forms project
Stars: ✭ 139 (-36.24%)
Mutual labels:  app, intro
Colored
🎨 Mirror of colored library repository
Stars: ✭ 98 (-55.05%)
Mutual labels:  library, color
Episodie
Episodie is a TV show time tracker app with unusual design written in kotlin and clean architecture approach. Get to know how much time you spent watching tv shows.
Stars: ✭ 125 (-42.66%)
Mutual labels:  material-design, app
Garland View Android
≡ GarlandView seamlessly transitions between multiple lists of content. Made by @Ramotion
Stars: ✭ 1,855 (+750.92%)
Mutual labels:  library, material-design
Cyanea
A theme engine for Android
Stars: ✭ 1,319 (+505.05%)
Mutual labels:  material-design, color
Simpledialogfragments
A collection of easy to use and extendable DialogFragment's for Android
Stars: ✭ 94 (-56.88%)
Mutual labels:  library, material-design
Dynamic Toasts
Custom toasts with color and icon for Android.
Stars: ✭ 132 (-39.45%)
Mutual labels:  library, material-design

Dynamic Support

License Build Status Download

A complete library to build apps for Android 4.0 (API 14) and above devices with a built-in theme engine. It is built on top of the latest app compat library to provide best compatibility.

Since v2.0.0, it uses AndroidX so, first migrate your project to AndroidX.
Since v3.0.0, it is dependent on Java 8 due to the dependency on DrawerLayout.

  

  


Contents


Installation

It can be installed by adding the following dependency to your build.gradle file:

dependencies {
    // For AndroidX enabled projects.
    implementation 'com.pranavpandey.android:dynamic-support:4.1.0'

    // For legacy projects.
    implementation 'com.pranavpandey.android:dynamic-support:1.3.0'
}

Usage

It is a collection of activities, fragments, widgets, views and some utility functions required to build a standard Android app. It also provides some in-built use cases like an intro screen, drawer activity, about screen, collapsing app bar, bottom navigation, color picker, multiple locales, runtime permissions, etc. which can be used and customised according to the need.

For complete reference, please read the documentation.

Theme engine

Each activity and widget can be themed by using the in-built theme engine with background aware functionality to avoid any visibility issues. Colors can be selected by using the provided material design colors or by selecting a custom color from the in-built picker which supports HEX, HSV and ARGB values.

Background aware

Below are the same colors applied on the light and dark backgrounds respectively. But the final color is adjusted according to the colored view background to provide best visibility.

  

Sample

This library is fully commented so, please check the individual classes or files for the documentation. Basic documentation will be available soon.

Checkout the sample to know more about the basic implementation.

Dependency

It depends on the dynamic-theme, dynamic-locale and dynamic-preferences to perform various internal operations. So, their functions can also be used to perform other useful operations.

Proguard

This library uses reflection at some places to theme widgets at runtime. So, their original name must be preserved to theme them properly. It will automatically apply the appropriate rules if proguard is enabled in the project.

The following rules will be applied by this library:

# Keep application class.
-keep public class * extends android.app.Application

# Keep methods in Activity that could be used in the XML.
-keepclassmembers class * extends android.app.Activity {
   public void *(android.view.View);
}

# Keep support library classes.
#-keep class android.support.v4.widget.** { *; }
#-keep class android.support.v7.widget.** { *; }
#-keep class android.support.design.widget.** { *; }
#-keep class android.support.design.internal.** { *; }

# Keep AndroidX classes.
-keep class androidx.core.widget.** { *; }
#-keep class androidx.appcompat.widget.** { *; }
-keep class androidx.appcompat.view.menu.** { *; }
-keep class androidx.recyclerview.widget.** { *; }
-keep class androidx.viewpager.widget.** { *; }

# Keep Material Components classes.
-keep class com.google.android.material.internal.** { *; }
-keep class com.google.android.material.navigation.** { *; }
-keep class com.google.android.material.textfield.** { *; }

# Keep all the Dynamic Support models.
-keep class com.pranavpandey.android.dynamic.support.model.** { *; }

# Dynamic Theme rules

# Gson uses generic type information stored in a class file when working with fields.
# Proguard removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using Gson annotation.
-keepattributes *Annotation*

# Gson specific classes.
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.** { *; }

Apps using Dynamic Support

All of my apps are using some or all part of this library. You can download them from Google Play. Please email me if you are using this library and want to feature your app here. Also, please checkout the Rotation and Everyday apps to experience the full potential of this library.

      


Translations

  • German (de) - Flubberlutsch
  • Hindi (hi) - Siddh Narhari
  • Indonesian (in) - Gamal Kevin A
  • Italian (it) - Nicola
  • Portuguese (pt) - Jorge Alexandre | Matheus Coelho
  • Russian (ru) - Maxim Anisimov
  • Spanish (es) - Dave
  • Turkish (tr) - Fatih Fırıncı
  • Chinese (Simplified) (zh-rCN) - 残念
  • Chinese (Traditional) (zh-rTW) - 會呼吸的風

Author

Pranav Pandey

GitHub Follow on Twitter Donate via PayPal


License

Copyright 2018-2021 Pranav Pandey

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 the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].