Create an awesome About Page for your Android App in 2 minutes

Related tags

App android android-ui
Overview

Android About Page

Create an awesome About Page for your Android App in 2 minutes

Android About Page Cover

This library allows to generate beautiful About Pages with less effort, it's fully customizable and supports opening specific intent

View aboutPage = new AboutPage(this)
  .isRTL(false)
  .setCustomFont(String) // or Typeface
  .setImage(R.drawable.dummy_image)
  .addItem(versionElement)
  .addItem(adsElement)
  .addGroup("Connect with us")
  .addEmail("[email protected]")
  .addWebsite("https://mehdisakout.com/")
  .addFacebook("the.medy")
  .addTwitter("medyo80")
  .addYoutube("UCdPQtdWIsg7_pi4mrRu46vA")
  .addPlayStore("com.ideashower.readitlater.pro")
  .addGitHub("medyo")
  .addInstagram("medyo80")
  .create();

Setup

Available on Jcenter, Maven and JitPack

implementation 'io.github.medyo:android-about-page:2.0.0'

Usage

1. Add Description

setDescription(String)

2. Add Image

setImage(Int)

3. Add predefined Social network

The library has already some predefined social networks like :

  • Facebook
  • Twitter
  • Instagram
  • Youtube
  • PlayStore
addFacebook(String PageID)
addTwitter(String AccountID)
addYoutube(String AccountID)
addPlayStore(String PackageName)
addInstagram(String AccountID)
addGitHub(String AccountID)

4. Add Custom Element

For example app version :

Element versionElement = new Element();
versionElement.setTitle("Version 6.2");
addItem(versionElement)

5. Available attributes for Element Class

Function Description
setTitle(String) Set title of the element
setIconTint(Int) Set color of the element
setSkipTint(Boolean) Skip tinting the icon (useful when using non vector drawables)
setIconDrawable(Int) Set icon of the element
setValue(String) Set Element value like Facebook ID
setIntent(Intent) Set an intent to be called on onClickListener
setGravity(Gravity) Set a Gravity for the element
setOnClickListener(View.OnClickListener) If intent isn't suitable for you need, implement your custom behaviour by overriding the click listener

6. How to use the library in a fragment

 @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return new AboutPage(getContext())
                .isRTL(false)
                .setDescription(getString(R.string.app_description))
                .addGroup(getString(R.string.contact_group))
                .addEmail("[email protected]", "Email")
                .addGroup(getString(R.string.application_information_group))
                .addItem(new VersionElement())
                .create();
    }

snippet by nrhoffmann

7. Styling

The library supports day-night modes. The dependents may use the following styling attributes to create a dedicated style for AboutPage. If the dependents choose not to specify an explicit style, the library falls back to sensible defaults.

First, declare an AboutPage style in your styles.xml.

#ffffff #333333 #999999 @style/TextAppearance.App.AboutPage.Description @style/about_elementTextAppearance.Dark @style/about_groupTextAppearance ">

<style name="Widget.App.AboutPage" parent="about_About">
  <item name="aboutBackground">#ffffffitem>
  <item name="aboutElementIconTint">#333333item>
  <item name="aboutSeparatorColor">#999999item>
  <item name="aboutDescriptionTextAppearance">@style/TextAppearance.App.AboutPage.Descriptionitem>

  
  <item name="aboutElementTextAppearance">@style/about_elementTextAppearance.Darkitem>
  <item name="aboutGroupTextAppearance">@style/about_groupTextAppearanceitem>
style>

<style name="TextAppearance.App.AboutPage.Description" parent="about_descriptionTextAppearance.Dark">
  <item name="android:textStyle">bold|italicitem>
style>

To apply this style globally, assign its reference to aboutStyle attribute in your app theme.

@style/Widget.AboutPage ">
<style name="Theme.App" parent="Theme.AppCompat">
  <item name="aboutStyle">@style/Widget.AboutPageitem>
style>

Or explicitly pass the style resource to the AboutPage constructor to apply it on selective AboutPage instances.

AboutPage aboutPage = new AboutPage(context, R.style.Widget_AboutPage);

8. Force Night/Day mode

We recommend that the dependents use AppCompatDelegate.setDefaultNightMode() to force enable/disable the night mode across their apps. If the dependents are unable to use the recommended approach, they can use the AboutPage(Context, boolean) constructor to specify the desired mode. The dependents must note that by using this constructor, the AboutPage will use its default styles, ignoring any explicitly specified style.

AboutPage aboutPage = AboutPage(context, true); // force enable dark mode.
AboutPage aboutPage = AboutPage(context, false); // force enable bright mode.

Sample Project

medyo/android-about-page/app/

Translations

The library does supports the following languages :

Please make a Pull request to add a new language.

ProGuard

Nothing to include

License

The MIT License (MIT)
Copyright (c) 2016 Mehdi Sakout

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Comments
  • Add style attributes

    Add style attributes

    Context

    Styling AboutPage in current versions is frowned upon. Currently, we explicitly override colors in my app to override the style.

    Changes

    • Add the following styling attributes to change colors and text appearances.
      1. aboutBackground
      2. aboutSeparatorColor
      3. aboutDescriptionTextAppearance
      4. aboutGroupTextAppearance
      5. aboutElementTextAppearance
      6. aboutElementIconTint
    • Add aboutStyle attribute to globally define styling attributes for AboutPage in XML
    • Replace enableDarkMode() with AboutPage(Context, boolean) constructor. I tried to keep it, but it was breaking the flow
    • Add AboutPage(Context, int) to override global aboutStyle

    As a result of these changes, the library can also handle day/night mode changes via AppCompatDelegate.

    Please let me know your thoughts!

    opened by ashutoshgngwr 11
  • Dark mode / Light mode

    Dark mode / Light mode

    How does is set the background color (Dark or Light)? Because launching the same app with the same style on different phones results in different background colors. So, is there any way to set a constant defining the theme to the light one?

    enhancement 
    opened by Tvax 11
  • How do I add Action Bar in MyActivity with this lib?

    How do I add Action Bar in MyActivity with this lib?

    Hi, I successfully added this lib to my project but I have a trouble. My activity appearance doesn't have any toolbar or action bar. It seems blank. How do I fix it? Thanks.

    help wanted 
    opened by nuhkoca 10
  • Crash on API 16

    Crash on API 16

    Hi,

    first of all thanks for this awesome library! Unfortunately I'm experiencing a crash when using the library on API level 16. On API 21 everything works fine.

    Here is the relevant code for creating the about page

    new AboutPage(getContext())
                    .setImage(R.drawable.logo)
                    .addItem(new Element(null, getString(R.string.share_with_friends), R.drawable.about_icon_share))
                    .create();
    

    I'm using the android gradle plugin 2.1.0. about_icon_share is a vector drawable. The library seems to assume that I'm using vectorDrawables.useSupportLibrary = true, which is not the case.

    FATAL EXCEPTION: main java.lang.RuntimeException: Unable to start activity ComponentInfo{de.dreier.mytargets/de.dreier.mytargets.activities.SimpleFragmentActivity$AboutActivity}: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/about_icon_share.png from xml type xml resource ID #0x7f020057 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) at android.app.ActivityThread.access$600(ActivityThread.java:130) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method) Caused by: android.content.res.Resources$NotFoundException: File res/drawable-xhdpi-v4/about_icon_share.png from xml type xml resource ID #0x7f020057 at android.content.res.Resources.loadXmlResourceParser(Resources.java:2145) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2100) at android.content.res.Resources.getXml(Resources.java:901) at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:408) at mehdi.sakout.aboutpage.AboutPage.createItem(AboutPage.java:364) at mehdi.sakout.aboutpage.AboutPage.addItem(AboutPage.java:241) at de.dreier.mytargets.fragments.AboutFragment.onCreateView(AboutFragment.java:91) at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617) at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339) at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601) at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) at android.app.Activity.performStart(Activity.java:5018) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  at android.app.ActivityThread.access$600(ActivityThread.java:130)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:4745)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  at dalvik.system.NativeStart.main(Native Method)  Caused by: java.io.FileNotFoundException: Corrupt XML binary file at android.content.res.AssetManager.openXmlAssetNative(Native Method) at android.content.res.AssetManager.openXmlBlockAsset(AssetManager.java:487) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2127) at android.content.res.Resources.loadXmlResourceParser(Resources.java:2100)  at android.content.res.Resources.getXml(Resources.java:901)  at android.support.graphics.drawable.VectorDrawableCompat.create(VectorDrawableCompat.java:408)  at mehdi.sakout.aboutpage.AboutPage.createItem(AboutPage.java:364)  at mehdi.sakout.aboutpage.AboutPage.addItem(AboutPage.java:241)  at de.dreier.mytargets.fragments.AboutFragment.onCreateView(AboutFragment.java:91)  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)  at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)  at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:601)  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)  at android.app.Activity.performStart(Activity.java:5018)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)  at android.app.ActivityThread.access$600(ActivityThread.java:130)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)  at android.os.Handler.dispatchMessage(Handler.java:99)  at android.os.Looper.loop(Looper.java:137)  at android.app.ActivityThread.main(ActivityThread.java:4745)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:511)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  at dalvik.system.NativeStart.main(Native Method)

    You can find the code at https://github.com/dreierf/mytargets

    Thanks in advance

    opened by DreierF 9
  • How to implement it correctly

    How to implement it correctly

    Hi. I'm trying to implement this project into mine, to use the About page with my own information on it. Every time I try to implement it, it crashs. I don't know hot to implement it well. How do I have to do it?

    P.S.: I have added the line on build.gradle well.

    help wanted 
    opened by juandiegoapps 8
  • Only in English?

    Only in English?

    I just gave a try to your great-looking plugin. Am I wrong or we can't change/edit labels to another language? Also, where is the long description located?

    Great work by the way ;)

    question i18n 
    opened by Isabellle 7
  • IsAppInstalled -> Packagemanager has died

    IsAppInstalled -> Packagemanager has died

    On some devices the about page crashes. And if it crashes on a device, this is not a one time thing: At those devices it crashes constantly.

    Fatal Exception: java.lang.RuntimeException Unable to resume activity {xxx}: java.lang.RuntimeException: Package manager has died android.app.ActivityThread.performResumeActivity (ActivityThread.java:4225) com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1120)

    android.app.ApplicationPackageManager.getPackageInfo (ApplicationPackageManager.java:258) mehdi.sakout.aboutpage.AboutPageUtils.isAppInstalled (AboutPageUtils.java:14) mehdi.sakout.aboutpage.AboutPage.addFacebook (AboutPage.java:137) mehdi.sakout.aboutpage.AboutPage.addFacebook (AboutPage.java:115) xxx.FragmentAbout.onCreateView (FragmentAbout.java:57)

    Maybe this has something to do with: https://stackoverflow.com/questions/24253976/android-package-manager-has-died-with-transactiontoolargeexception

    So maybe those users where it crashes have installed a lot of packages and therefor the limit hits?

    bug 
    opened by landliebe 6
  • AndroidX Jetpack migration needed

    AndroidX Jetpack migration needed

    Well, I think we need to publish this library with AndroidX Jetpack ASAP. I checked so many dependencies on my project, and found that 3 of 19 dependencies are still using old Support Library. Android About Page is one of them. I am aware that this lib will cause crash to my app since Support Library has different package name with AndroidX Jetpack. We don't have to wait until stable version 1.0.0 is released by Google. We can do it now. I have tested AndroidX and found no problem with it.

    opened by anggrayudi 4
  • Using in Fragment

    Using in Fragment

    Very good library and convenience to use, but I want to know how to use it in Fragment instead of activity. I am just a beginner, so please help me. Thank you in advance

    help wanted 
    opened by AIOSYM 4
  • Adding library causing

    Adding library causing "android.support.design.widget.NavigationView" error

    When I add this library in app.bundle my app starts crashing. I didn't even change a single line of code except adding compile path in app.bundle.

    Error log is as below

    java.lang.RuntimeException: Unable to start activity ComponentInfo{andro.rdx.pharmac/andro.rdx.pharmac.activity.DashboardActivity}: android.view.InflateException: Binary XML file line #147: Error inflating class android.support.design.widget.NavigationView at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2200) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2249) at android.app.ActivityThread.access$800(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1212) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5113) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609) at dalvik.system.NativeStart.main(Native Method)

    removing the compile path resolve this error. Did anyone else faced this issue ?

    Here is the app's config info compileSdkVersion 23 buildToolsVersion "23.0.2" minSdkVersion 15 targetSdkVersion 23

    compile 'com.android.support:appcompat-v7:23.1.0' compile 'com.android.support:design:23.1.0'

    opened by kumar-aakash86 4
  • pt-BR translation suggestion

    pt-BR translation suggestion

    Here it goes:

    <resources>
        <string name="about_page_description" translatable="false" >Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus vehicula ligula tortor, in pellentesque dui congue ac. Vestibulum lacinia urna magna, quis cursus ante iaculis nec. Nunc ut ligula sit amet odio ultrices euismod vel vel purus. Sed lacus mauris, aliquam et placerat id</string>
    
        <string name="about_contact_us">Fale Conosco</string>
        <string name="about_instagram">Siga-nos no Instagram</string>
        <string name="about_facebook">Curta no Facebook</string>
        <string name="about_play_store">Avalie-nos na Play Store</string>
        <string name="about_youtube">Assista-nos no Youtube</string>
        <string name="about_twitter">Siga-nos no Twitter</string>
        <string name="about_github">Crie um Fork no GitHub</string>
        <string name="about_website">Visite o nosso website</string>
    
    </resources>
    

    Disclaimer: Portuguese is my native language

    i18n 
    opened by rbaprado 4
  • Add Phone Element Suggestion

    Add Phone Element Suggestion

    Thanks for your great About Pge library.

    Below is a suggestion for the code to add an element that enables users to open the phone dialer with a preset phone number

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
           
            String phone = "+254722906835";
    
            View aboutPage = new AboutPage(this)
                    .isRTL(false)
                    //.setCustomFont(String) // or Typeface
                    .setImage(R.drawable.login_logo)
    
                    //.addItem(versionElement)
                   // .addItem(adsElement)
                    .addEmail("[email protected]")
                    .addItem(getPhoneElement(phone))
                    .addWebsite("https://sapamacash.com/")
                    .addFacebook("sapamatech")
                    .addTwitter("sapamatech")
                    .addYoutube("UCV-sIbWJ5HpO0qk6Hp7Sjfw")
                   // .addItem(getCopyRightsElement())
                    //.addPlayStore("com.ideashower.readitlater.pro")
                    //.addGitHub("medyo")
                    //.addInstagram("medyo80")
                    .create();
    
            setContentView(aboutPage);
    
        }
    
        /**
         * S# getPhoneElement() function
         *
         * Get Phone Element
         *
         * @param phone
         *
         * @return Element
         * */
        Element getPhoneElement(String phone) {
            Element copyRightsElement = new Element();
            final String phoneTitle = "Call us";
            copyRightsElement.setTitle(phoneTitle);
            copyRightsElement.setIconDrawable(R.drawable.ic_phone);
            copyRightsElement.setAutoApplyIconTint(true);
            copyRightsElement.setIconTint(mehdi.sakout.aboutpage.R.color.about_item_icon_color);
            copyRightsElement.setIconNightTint(android.R.color.white);
            copyRightsElement.setGravity(Gravity.LEFT);
            copyRightsElement.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_DIAL);
                    intent.setData(Uri.parse("tel:"+phone));
                    startActivity(intent);
                }
            });
    
            return copyRightsElement;
        }  
    }
    
    opened by edwinmugendi 0
  • Email icon isn't visible in dark mode

    Email icon isn't visible in dark mode

    Email icon is almost the same color as background, so it's not visible in dark mode. It would be good to change the color of icon according to the dark mode.

    opened by tutaf 7
  • Facebook Page: Trouble Loading

    Facebook Page: Trouble Loading

    I am using this lib for my about us UI. I have added .addFacebook("bhaijitsen") in my code. Whenever user taps Like us On Facebook option, it opens Facebook app showing 'Trouble Loading. Tap to retry. Attaching the SS here. I am not sure whether the problem lies in Facebook App or device specific issue or this lib issue. Screenshot_20200717-134742.jpg

    opened by mihodihasan 2
Releases(1.3)
Owner
Mehdi Sakout
Software Engineer with an entrepreneurial spirit!
Mehdi Sakout
Help-page-finder - Help page finder for android

help-page-finder This app allows to search for help articles on a website. It is

null 0 Feb 13, 2022
Techbee e.U. 62 Jan 31, 2023
ZeAppp v3, created by Android enthusiasts joining the Droidcon 2021 in Berlin, coming to the GDG Booth and writing code, 15 minutes at a time

ZeThree App build at the GDG Community booth at Droidcon Berlin 2021. Come join the fun™. ZeWhat? Based on the previous success of the ZeAppp-app, thi

GDG Berlin Android 8 Sep 16, 2022
An Android app to stream and download your media stored in Google Drive in an Awesome way !!

⚡ Thunder : An Android app to stream and download your media stored in Google Drive in an Awesome way !! (Just Movies for now) ?? Getting Started : Le

null 278 Jan 5, 2023
LeeCo is an awesome app for (including unlock) problems, solutions, discuss(from leetcode) and comments.

LeeCo LeeCo is an awesome app for algorithem problems(including unlock), solutions, discuss(from leetcode) and comments. #中文文档 README-ZH.md #Download

Nightonke 487 Nov 25, 2022
Awesome Kid's Drawing App. It has a click and draws feature.

CanvaKids Overview It's a kid's drawing app which is build for android users. It is built in Kotlin with some very good practices involved.

null 9 Oct 30, 2021
An android client application for the awesome kanji learning website wanikani.com

End of Life This project has reached EOL status. It will no longer be updated, patched, or supported. If you are interested in continuing the work, fe

İhsan Işık 507 Nov 12, 2022
Terror Cellar Android app create using Kotlin

Terror_Cellar Technologies Used Kotlin, Firebase (authentication), Room ORM (database) About the Project This was the main project of a Mobile Computi

David Rausch 1 Oct 22, 2021
Source code of JekyllEx Android App which can manage your Jekyll blog directly from your Android device!

JekyllEx Android App Built with ❤︎ by Gourav Khunger ?? Introduction JekyllEx is an Android App that allows you to manage a Jekyll Blog directly from

JekyllEx 24 Nov 8, 2022
Progressive Web App that allows you to create workout tables

WORKOUT Progressive Web App that allows you to create workout tables. ...work in

Piero 0 Jan 10, 2022
Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast Receiver.

Worker Notification Demo app demonstrating how to create and manage notifications locally using a combination of Jetpacks Worker Manager and Broadcast

Ayia 1 Sep 19, 2022
Taskify - An app to manage your daily tasks and boost your productivity. Taskify is built using kotlin and follows all modern android Development practices and hence is a good learning resource for beginners

Taskify Taskify is an app to manage your daily tasks and boost your productivity Video Introduction ?? This is a small introduction video about Taskif

Vaibhav Jaiswal 101 Jan 4, 2023
Vaibhav Jaiswal 57 Jan 3, 2023
ICSx⁵ is an Android app to subscribe to remote or local iCalendar files (like time tables of your school/university or event files of your sports team).

ICSx⁵ ICSx⁵ is an Android app to subscribe to remote Webcal feeds / iCalendar files (like time tables of your school/university or event files of your

bitfire web engineering 60 Dec 28, 2022
Candash - A simple Android app that turns your phone into an instrument cluster for your Tesla Model 3 and Y

What is CANdash? CANdash is an Android app that turns your Android device into a

Nick Nguyen 31 Nov 5, 2022
Easy app for managing your files without ads, respecting your privacy & security

Simple File Manager Can also be used for browsing root files and SD card content. You can easily rename, copy, move, delete and share anything you wis

Simple Mobile Tools 1.2k Dec 30, 2022
when you use restful api and network get disconnect you have to store your data local for make your app faster and work on ofline mode

AppArchitectureOflineMode when you use restful api and network get disconnect you have to store your data local for make your app faster and work on o

Kareem-Mansy 3 Jun 20, 2021