Android Library to display your changelog

Related tags

UI/UX changeloglib
Overview

ChangeLog Library

ChangeLog Library provides an easy way to display a change log in your Android app.

Travis master: Build Status Travis dev: Build Status

Screen


Examples

If you would like, you can support my work, donating through the demo app.

For more examples and screenshots you can read this document:

Feature

ChangeLog Library provides a custom RecyclerView to display a change log through a xml file.

  • you can use it in Activities, Fragments, Dialogs
  • it works with a RecyclerView or a ListView
  • it supports html text markup as bold and italics
  • you can customize layout and behaviour
  • it supports multi language
  • it supports API 7+

Doc

See the customisation page: for more information.


Quick Start

ChangeLog Library is pushed to Maven Central as a AAR, so you just need to add the following dependency to your build.gradle.

dependencies {
    compile 'com.github.gabrielemariotti.changeloglib:changelog:2.1.0'
}

To build the library and demo locally you can see this page for more info.

ChangeLog

Usage

Implementing this library in your own apps is pretty simple.
First, add in your layout the ChangeLogRecyclerView that displays your changelog.

<?xml version="1.0" encoding="utf-8"?>
<it.gmariotti.changelibs.library.view.ChangeLogRecyclerView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center" />

Then, you need a XML file with change log in res/raw folder. It automatically searches for res/raw/changelog.xml but you can customize filename.

<?xml version="1.0" encoding="utf-8"?>
<changelog bulletedList="true">

    <changelogversion versionName="1.0" changeDate="Aug 26,2013">
            <changelogtext>Initial release.</changelogtext>
    </changelogversion>

    <changelogversion versionName="0.9" changeDate="Aug 11,2013">
        <changelogtext>[b]New![/b] Add new attrs to customize header and row layout</changelogtext>
        <changelogtext>Fixed log while parsing </changelogtext>
        <changelogtext>Add support for html markup</changelogtext>
        <changelogtext>Add bullet point in </changelogtext>
        <changelogtext>Support for customized xml filename</changelogtext>
    </changelogversion>

</changelog>

Last, if you would like a multi language changelog, you just have to put the translated files changelog.xml in the appropriate folders res/raw-xx/.

Credits

Author: Gabriele Mariotti ([email protected])

Follow me on Google+ Follow me on Twitter Follow me on LinkedIn

License

Copyright 2013-2015 Gabriele Mariotti

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.
Comments
  • AppCompat 23.2.0

    AppCompat 23.2.0

    Ciao,

    Aggiornando le librerie Appcompat etc di Google alla versione 23.2.0, le voci del changelog appaiono sparse a grande distanza una dall'altra.

    Il mio codice รจ questo:

    <it.gmariotti.changelibs.library.view.ChangeLogRecyclerView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                risuscito:changeLogFileResourceId="@raw/changelog_full"
                risuscito:rowHeaderLayoutId="@layout/changelogrowheader_material_layout"
                risuscito:rowLayoutId="@layout/changelogrow_material_layout"
                android:id="@+id/aboutText" />
    

    Grazie in anticipo.

    bug fixed-in-development 
    opened by marbat87 10
  • Feature request: firstRun method

    Feature request: firstRun method

    First: Thanks for your great library!

    One feature, developers want to provide using your library, might be to auto show the changelog if a new version is installed. Therefore, it is necessary to determine the installed version and to compare it. In my opinion this is a common use case and should be part of this lib.

    My feature suggestion: Please provide a function e.g. firstRun() which returns true if the app in the current version is started the first time. (other ways to implement this are of course ok, too. e.g. a static constructor autoFirstRun() which shows the changelog only if a new version is installed).

    To inspire, you can take a look at the firstRun method of this lib: See here

    Thanks!

    enhancement 
    opened by flubshi 10
  • Need Hyperlink

    Need Hyperlink

    [a href="domain.com"]more[/a] should be really helpful.

    also don't know about how to change the color for some tex like [b color="#e4e4e4"]new[/b] Notification.

    enhancement fixed-in-development 
    opened by DineshAnandan 9
  • NoClassDefFoundError

    NoClassDefFoundError

    Hi, I get this error, here is the logcat. Did I do something wrong? I did as in your build.md

    01-06 15:42:13.457: E/AndroidRuntime(4221): FATAL EXCEPTION: main 01-06 15:42:13.457: E/AndroidRuntime(4221): android.view.InflateException: Binary XML file line #2: Error inflating class it.gmariotti.changelibs.library.view.ChangeLogListView 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createView(LayoutInflater.java:613) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:466) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:396) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.inflate(LayoutInflater.java:352) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.huteri.monas.BaseActivity.onOptionsItemSelected(BaseActivity.java:53) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.huteri.monas.MainActivity.onOptionsItemSelected(MainActivity.java:198) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.support.v4.app.Watson.onMenuItemSelected(Watson.java:118) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.ActionBarSherlock.callbackOptionsItemSelected(ActionBarSherlock.java:604) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.internal.ActionBarSherlockNative.dispatchOptionsItemSelected(ActionBarSherlockNative.java:92) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:204) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:958) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.view.menu.MenuPopupHelper.onItemClick(MenuPopupHelper.java:156) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView.performItemClick(AbsListView.java:1086) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2855) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.widget.AbsListView$1.run(AbsListView.java:3529) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Handler.handleCallback(Handler.java:615) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Handler.dispatchMessage(Handler.java:92) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.os.Looper.loop(Looper.java:137) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.app.ActivityThread.main(ActivityThread.java:4745) 01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Method.invokeNative(Native Method) 01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Method.invoke(Method.java:511) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 01-06 15:42:13.457: E/AndroidRuntime(4221): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 01-06 15:42:13.457: E/AndroidRuntime(4221): at dalvik.system.NativeStart.main(Native Method) 01-06 15:42:13.457: E/AndroidRuntime(4221): Caused by: java.lang.reflect.InvocationTargetException 01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Constructor.constructNative(Native Method) 01-06 15:42:13.457: E/AndroidRuntime(4221): at java.lang.reflect.Constructor.newInstance(Constructor.java:417) 01-06 15:42:13.457: E/AndroidRuntime(4221): at android.view.LayoutInflater.createView(LayoutInflater.java:587) 01-06 15:42:13.457: E/AndroidRuntime(4221): ... 28 more 01-06 15:42:13.457: E/AndroidRuntime(4221): Caused by: java.lang.NoClassDefFoundError: it.gmariotti.changelibs.R$styleable 01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.initAttrs(ChangeLogListView.java:105) 01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.init(ChangeLogListView.java:89) 01-06 15:42:13.457: E/AndroidRuntime(4221): at it.gmariotti.changelibs.library.view.ChangeLogListView.(ChangeLogListView.java:69) 01-06 15:42:13.457: E/AndroidRuntime(4221): ... 31 more

    invalid 
    opened by huteri 4
  • Upload to the Maven Central

    Upload to the Maven Central

    Would you mind to upload this library to maven or gradle? Here is a link https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide

    opened by vmihalachi 4
  • NPE with 23.2.0 in android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left

    NPE with 23.2.0 in android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left

    As reported by Zeliret in #28:

    For me there is another problem. I have a crash:

    java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference
                                                                     at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78)
                                                                     at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246)
                                                                     at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147)
                                                                     at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422)
                                                                     at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231)
                                                                     at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086)
                                                                     at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914)
                                                                     at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743)
                                                                     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586)
                                                                     at android.widget.LinearLayout.onLayout(LinearLayout.java:1495)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336)
                                                                     at android.widget.FrameLayout.onLayout(FrameLayout.java:273)
                                                                     at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678)
                                                                     at android.view.View.layout(View.java:16636)
                                                                     at android.view.ViewGroup.layout(ViewGroup.java:5437)
                                                                     at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171)
                                                                     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931)
                                                                     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                     at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                     at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844)
                                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                     at android.os.Looper.loop(Looper.java:148)
                                                                     at android.app.ActivityThread.main(ActivityThread.java:5417)
                                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.jav
    

    My layout:

    <it.gmariotti.changelibs.library.view.ChangeLogRecyclerView
        android:id="@+id/view"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipToPadding="false"
        android:paddingBottom="@dimen/padding_narrow"
        android:paddingTop="@dimen/padding_narrow"
        app:rowHeaderLayoutId="@layout/header_changelog"
        app:rowLayoutId="@layout/item_changelog"/>
    
    bug fixed-in-development 
    opened by gabrielemariotti 3
  • No empty view

    No empty view

    Hi,

    Sometime it takes long to parse the changelog file from rae resources and there is no empty view to display (i.e.: a progressbar). Could that be added?

    M

    opened by mevcloud 2
  • Weird

    Weird "No internet connection to fetch the changelog" in version number

    The header displays the message "No internet connection to fetch the changelog" right in front of the version number. I use a changelog from resources. Screenshot: screenshot_20160411-101530

    opened by heinrichreimer 1
  • Nullpointer when compiling with

    Nullpointer when compiling with "support:recyclerview-v7:24.0.0-alpha1"

    java.lang.NullPointerException: Attempt to read from field 'int android.support.v7.widget.RecyclerView$ItemAnimator$ItemHolderInfo.left' on a null object reference at android.support.v7.widget.SimpleItemAnimator.animateDisappearance(SimpleItemAnimator.java:78) at android.support.v7.widget.RecyclerView.animateDisappearance(RecyclerView.java:3246) at android.support.v7.widget.RecyclerView.access$700(RecyclerView.java:147) at android.support.v7.widget.RecyclerView$4.processDisappeared(RecyclerView.java:422) at android.support.v7.widget.ViewInfoStore.process(ViewInfoStore.java:231) at android.support.v7.widget.RecyclerView.dispatchLayoutStep3(RecyclerView.java:3086) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2914) at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3277) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586) at android.widget.LinearLayout.onLayout(LinearLayout.java:1495) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1743) at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1586) at android.widget.LinearLayout.onLayout(LinearLayout.java:1495) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.widget.FrameLayout.layoutChildren(FrameLayout.java:336) at android.widget.FrameLayout.onLayout(FrameLayout.java:273) at com.android.internal.policy.PhoneWindow$DecorView.onLayout(PhoneWindow.java:2678) at android.view.View.layout(View.java:16636) at android.view.ViewGroup.layout(ViewGroup.java:5437) at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2171) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1931) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.

    wontfix 
    opened by jaydeepw 1
  • Incompatibility of appCompat

    Incompatibility of appCompat

    When we upgrade AppCompat in app to 23.2.0 and we using MaterialDialogs (https://github.com/afollestad/material-dialogs) to wrap Changeloglib app crash.

    It looks as incompatibility of this lib which uses older 22.2.0

    Could you please upgrade appCompat libs?

    bug duplicate 
    opened by mtrakal 1
  • Possibility to create hierarchie in changelog

    Possibility to create hierarchie in changelog

    It would be great to be able to create a simple hierarchie in the changelog, e.g.

    • UI
      • Using the Design SUpport Library

    The HTML representation I have in mind talking about an hierarchie would look like

    <ul>
        <li>
            <b>UI</b>
        </li>
        <ul>
            <li>Using the SUpport Design Library</li>
        </ul>
    </ul>
    

    The bold formatting could be done with the given possibilities using [b] [/b] but it would be great to get the idention feature. Maybe by introducing a new tag <changelogsubtext></changelogsubtext>.

    opened by bohoffi 1
  • Option to

    Option to "Never show again"

    While some users may find the changelog informative and interesting, I find that some users get annoyed by changelog popups when frequent updates occur.

    Would it be possible to include a "Never show again" option in the changelog dialog?

    Thanks for the consideration and the awesome lib.

    opened by mruijzendaal 1
  • Library still supported?

    Library still supported?

    Pull requests are not merged so I'm asking this question...

    I still like the lib and added following (or am adding this currently):

    • support filtering logs (like show only logs that have not been shown yet)
    • support custom log formatter in code

    And I would make a pull request then...

    opened by MFlisar 2
  • Add support for AboutLibraries

    Add support for AboutLibraries

    This PR adds support for AboutLibraries. By adding these additions in strings.xml, AboutLibraries automatically recognizes this library and shows the correct license and author information.

    This definition is built using the definition generator on the AboutLibraries website.

    I would like to merge these changes as I'm using changeloglib and I would like to use AboutLibraries with an appropriate attribution :-)

    opened by geertw 0
  • < in xml not working

    < in xml not working

    Adding &lt; in the changelog text is not working... Using a CDATA approach neither...

    The changelog line with an &lt; in it is always cut of at the position of &lt;...

    Any other way to get a < in my changelog?

    opened by MFlisar 0
Releases(v.2.0.0)
Owner
Gabriele Mariotti
Gabriele Mariotti
ckChangeLog - An Android Library to display a Change Log

ckChangeLog - An Android Library to display a Change Log This library provides an easy way to display a change log in your app. Features Displays chan

cketti 182 Dec 3, 2022
MarkdownView is an Android webview with the capablity of loading Markdown text or file and display it as HTML, it uses MarkdownJ and extends Android webview.

About MarkdownView (Markdown For Android) is an Android library that helps you display Markdown text or files (local/remote) as formatted HTML, and st

Feras Alnatsheh 1k Dec 20, 2022
An Android custom view to display digits rendered as dots in a grid, with a style like a 1970s LED clock.

#DotMatrixView This is an Android library project providing a custom view that can display things on a grid of dots. When the displayed value changes,

Mark Roberts 48 Apr 21, 2022
Android App that communicates with a back-end server to display different One Piece characters

About This project is an Android App that communicates with a back-end server to display different One Piece characters. It's roughly based on this co

Sam Garcia 1 Feb 4, 2022
Implementation of the fragment with the ability to display indeterminate progress indicator when you are waiting for the initial data.

Android-ProgressFragment Implementation of the fragment with the ability to display indeterminate progress indicator when you are waiting for the init

Evgeny Shishkin 813 Nov 11, 2022
Display code with syntax highlighting :sparkles: in native way.

CodeView (Android) CodeView helps to show code content with syntax highlighting in native way. Description CodeView contains 3 core parts to implement

Kirill Biakov 827 Dec 22, 2022
Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your development.

Bubbles for Android Bubbles for Android is an Android library to provide chat heads capabilities on your apps. With a fast way to integrate with your

Txus Ballesteros 1.5k Jan 2, 2023
Make your native android Toasts Fancy. A library that takes the standard Android toast to the next level with a variety of styling options. Style your toast from code.

FancyToast-Android Prerequisites Add this in your root build.gradle file (not your module build.gradle file): allprojects { repositories { ... ma

Shashank Singhal 1.2k Dec 26, 2022
Make your native android Dialog Fancy. A library that takes the standard Android Dialog to the next level with a variety of styling options. Style your dialog from code.

FancyAlertDialog-Android Prerequisites Add this in your root build.gradle file (not your module build.gradle file): allprojects { repositories { ..

Shashank Singhal 350 Dec 9, 2022
Useful library to use custom fonts in your android app

EasyFonts A simple and useful android library to use custom fonts in android apps without adding fonts into asset/resource folder.Also by using this l

Vijay Vankhede 419 Sep 9, 2022
This library provides a simple way to add a draggable sliding up panel (popularized by Google Music and Google Maps) to your Android application. Brought to you by Umano.

Note: we are not actively responding to issues right now. If you find a bug, please submit a PR. Android Sliding Up Panel This library provides a simp

Umano: News Read To You 9.4k Dec 31, 2022
A simple library to add Emoji support to your Android Application

Emoji A library to add Emoji support to your Android app. Emojis can be picked in a PopupWindow. In order to edit and display text with Emojis this li

Niklas Baudy 1.4k Jan 4, 2023
GreenDroid is a development library for the Android platform. It makes UI developments easier and consistent through your applications.

#GreenDroid Foreword : This project, initially initiated by me, Cyril Mottier, is not maintained anymore and can be considered as deprecated. As a con

Cyril Mottier 2.6k Jan 4, 2023
A TagView library for Android. Customize your own & Drag effect.

AndroidTagView An Android TagView library. You can customize awesome TagView by using this library. Screenshots Usage Step 1 Add below dependency in y

lujun 1.7k Dec 29, 2022
Android Material Json Form Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular format.

Android Json Wizard Android Json Wizard is a library for creating beautiful form based wizards within your app just by defining json in a particular f

Vijay Rawat 355 Nov 11, 2022
This library offers a simple method to add a small badge icon to your ActionBar-MenuItem

Android-ActionItemBadge ActionItemBadge is a library which offers a simple and easy to use method to add a badge to your action item! Screenshots Incl

Mike Penz 1.3k Jan 1, 2023
A simple library to let you sign (or draw lines) smoothly with your finger into a view and save it.

FingerSignView Introduction FingerSignView is a simple library that lets you finger, or draw lines, smoothly with your finger into a View and save it

Agnaldo Pereira 25 Nov 20, 2022
๐Ÿช„ It's a library that helps you customize your notification bar

NotificationBarCustom ?? It's a library that helps you customize your notification bar Demo Contrast(white) Contrast(black) Transparent Setup Add it i

๋ฐ•์ƒ์„  8 Sep 7, 2022
A Jetpack Compose library with blur, pixelate, and other effects to keep your designer happy. Inspired by iOS UIVisualEffectView.

A Jetpack Compose library with blur, pixelate, and other effects to keep your designer happy. Inspired by iOS UIVisualEffectView.

ๆธ…่Œถ 67 Dec 30, 2022