Icons, Borders, Radius ... for Android buttons

Min SDK   8
Latest Commit   2017-10-03 08:05:01
License   unknown

Github   https://github.com/medyo/fancybuttons

         

Using app client to scan QR code to run Demo


...

medyo

Casablanca, Morocco

http://medyo.github.io
Android Developer with an entrepreneurial spirit !

         

Similarily...
android-flat-button FButton - a flat button library for Android
MagicFloatView 一个可配置及自定义拓展漂浮路径的迷你版轻量级 MagicFlyLinearLayout 漂浮控件。
IconSwitch
README

README.md

Fancybuttons

Icons, Borders, Radius ... for Android buttons jCenter jitPack Android Arsenal

Android About Page Cover

Overview

FancyButtons Android

Demo Application : Download APK

Features

  • Border (stroke, radius, color)
  • Background (normal, focus)
  • Icon (Drawable, font Icon)
  • Icon (Position, size)
  • Icon Size
  • Icon Padding

Changelog

  • 1.8.4

    • Fix Text Gravity
    • Add Ability to define custom radius value for each corner
  • 1.8.3

    • Fixed long searching of font
    • Added ability to use android:text, android:textSize, android:testAllCaps attributes
    • Fixed preview issues with android:* attrs
    • Added opportunity to use android:* attrs in styles
    • Added ability to use custom LayoutParams instead of the default one
    • Force refreshing the view when setEnabled(boolean) is called
    • Minor optimization & refactoring
  • 1.8.2

    • Added ability to disable button
    • Added ability to use system font
  • 1.8.1

    • Fix Bug related to loading custom fonts
  • 1.8

    • Add setIconResource(Drawable)
    • Cache fonts
  • 1.7

    • Fix ripple effect when background is transparent
    • Add capitalization of text
  • 1.6

    • Add ripple effect
    • Upgrade Font Awesome to 4.5.0

Installation

compile 'com.github.medyo:fancybuttons:1.8.4'

Usage

1 - Include FancyButtons namespace to the root element :

xmlns:fancy="http://schemas.android.com/apk/res-auto"

2 - Add the FancyButton View with custom params :

<mehdi.sakout.fancybuttons.FancyButton
android:id="@+id/btn_preview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

Supported Attributes

XML Attribute Java Attribute Description
fancy:fb_text setText(String) Text of the button
fancy:fb_textColor setTextColor(int) Text Color of the button
fancy:fb_textSize setTextSize(int) Size of the text
fancy:fb_textFont setCustomTextFont(String) FontFamily of the text
fancy:fb_textGravity setTextGravity(Int) Gravity of the text
fancy:fb_iconResource setIconResource(Drawable) Drawable icon of the button
fancy:fb_iconPosition setIconPosition(int) Position of the icon : Left, Right, Top, Bottom
fancy:fb_fontIconResource setIconResource(String) font icon of the button
fancy:fb_fontIconSize setFontIconSize(int) Size of the icon
fancy:fb_iconFont setCustomIconFont(String) FontFamily of the icon
fancy:fb_borderWidth setBorderWidth(int) Width of the border
fancy:fb_borderColor setBorderColor(int) Color of the border
fancy:fb_defaultColor setBackgroundColor(int) Background color of the button
fancy:fb_focusColor setFocusBackgroundColor(int) Focus Color of button background
fancy:fb_disabledColor setDisableBackgroundColor(int) Disabled Color of button background
fancy:fb_disabledTextColor setDisableTextColor(int) Disabled Color of button text
fancy:fb_disabledBorderColor setDisableBorderColor(int) Disabled Color of button border
fancy:fb_radius setRadius(int) Radius of the button
fancy:fb_radius(TopLeft, TopRight,BottomLeft,BottomRight) setRadius(int[] radius) Custom Radius for each button corner
fancy:fb_iconPaddingLeft setIconPadding(int,int,int,int) Icon Padding
fancy:fb_iconPaddingRight setIconPadding(int,int,int,int) Icon Padding
fancy:fb_iconPaddingTop setIconPadding(int,int,int,int) Icon Padding
fancy:fb_iconPaddingBottom setIconPadding(int,int,int,int) Icon Padding
fancy:fb_ghost setGhost(boolean) Ghost (Hollow)
fancy:fb_useSystemFont setUsingSystemFont(boolean) If enabled, the button title will ignore its custom font and use the default system font

Also you can use Attributes with default prefix (android:) which makes migrating of your project more fast. Default Attributes have more priority than Attributes with prefix fancy.

Supported default Attributes

XML Attribute
android:enabled
android:text
android:textSize
android:textAllCaps

Supported Getters

| Function | Description | | ------------- |:-------------:| -----:| | getText() | Returns Text Value of the button| | getTextViewObject() | Returns TextView Object| | getIconFontObject() | Returns icon defined by fb_fontIconResource| | getIconImageObject() | Returns icon defined by fb_iconResource |

Sample

1 - Spotify Button

FancyButton Spotify

<mehdi.sakout.fancybuttons.FancyButton
	android:id="@+id/btn_spotify"
	android:layout_width="wrap_content"
	android:layout_height="wrap_content"
	android:paddingBottom="10dp"
	android:paddingLeft="20dp"
	android:paddingRight="20dp"
	android:paddingTop="10dp"
	fancy:fb_borderColor="#FFFFFF"
	fancy:fb_borderWidth="1dp"
	fancy:fb_defaultColor="#7ab800"
	fancy:fb_focusColor="#9bd823"
	fancy:fb_fontIconResource="&#xf04b;"
	fancy:fb_iconPosition="left"
	fancy:fb_radius="30dp"
	fancy:fb_text="SHUFFLE PLAY"
	fancy:fb_textColor="#FFFFFF" />

2 - Facebook Button

FancyButton Facebook

FancyButton facebookLoginBtn = new FancyButton(this);
facebookLoginBtn.setText("Login with Facebook");
facebookLoginBtn.setBackgroundColor(Color.parseColor("#3b5998"));
facebookLoginBtn.setFocusBackgroundColor(Color.parseColor("#5474b8"));
facebookLoginBtn.setTextSize(17);
facebookLoginBtn.setRadius(5);
facebookLoginBtn.setIconResource("\uf082");
facebookLoginBtn.setIconPosition(FancyButton.POSITION_LEFT);
facebookLoginBtn.setFontIconSize(30);

See the example project for more samples

Bonus

Fancybuttons is delivered with :


FancyButtons AndroidFancyButtons AndroidFancyButtons Android

FAQ

How to add new fonts ? Just Paste your font inside assets/fonts/ folder for Text fonts or inside assets/iconfonts/ for icon fonts eg : entypo

Contributions

Fancybuttons needs you to build the missing features :

  • Supporting Circular buttons
  • Add elevation (Material Design)

Licence

MIT http://opensource.org/licenses/MIT

Developed By

El Mehdi Sakout

Follow @medyo80 on Twitter for the latest news.

For contact, shoot me an email at elmehdi.sakout@gmail.com