All Projects → ferrytan → SkeletonPlaceholderView

ferrytan / SkeletonPlaceholderView

Licence: Apache-2.0 license
A library for creating dynamic skeleton view

Programming Languages

kotlin
9241 projects
java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to SkeletonPlaceholderView

Uilibrary
平时项目开发中写的自定义Drawable、View和Shape
Stars: ✭ 260 (+940%)
Mutual labels:  view, custom-view
Easysignseekbar
本库主要提供一个漂亮而强大的自定义SeekBar,进度变化由提示牌 (sign)展示,具有强大的属性设置,支持设置section(节点)、mark(标记)、track(轨迹)、thumb(拖动块)、progress(进度)、sign(提示框)等功能
Stars: ✭ 629 (+2416%)
Mutual labels:  view, custom-view
auto-fill-edit-text
This custom EditText can suggest and fill text defined before.
Stars: ✭ 26 (+4%)
Mutual labels:  view, custom-view
Creditcardview
💳 CreditCardView is an Android library that allows developers to create the UI which replicates an actual Credit Card.
Stars: ✭ 744 (+2876%)
Mutual labels:  view, custom-view
Mkloader
Beautiful and smooth custom loading views
Stars: ✭ 1,377 (+5408%)
Mutual labels:  view, custom-view
ProgressableImageView
Change your users progress capability with ProgressableImageView
Stars: ✭ 86 (+244%)
Mutual labels:  view, custom-view
Freepager
ViewPagers library for Android
Stars: ✭ 461 (+1744%)
Mutual labels:  view, custom-view
Iconswitch
🍭 Custom Android Switch widget
Stars: ✭ 874 (+3396%)
Mutual labels:  view, custom-view
Meter Number Picker
The android library that provides a simple and customizable NumberPicker styled as meter.
Stars: ✭ 96 (+284%)
Mutual labels:  view, custom-view
Broccoli
📟An Android library that shows the placeholder of the view.
Stars: ✭ 1,390 (+5460%)
Mutual labels:  view, placeholder
Custom-Grid-View
Custom Drag and Drop Grid for Home Assistant
Stars: ✭ 103 (+312%)
Mutual labels:  view, custom-view
DPB
Dynamic Project Builder
Stars: ✭ 22 (-12%)
Mutual labels:  placeholder
docheader
A small tool to check license headers
Stars: ✭ 65 (+160%)
Mutual labels:  placeholder
Frames
Retrieves desired frames from video.
Stars: ✭ 51 (+104%)
Mutual labels:  view
DynamicViewPagerDemo
ViewPager单屏显示多页面,动画效果
Stars: ✭ 49 (+96%)
Mutual labels:  view
FillProgressLayout
A simple and flexible Fillable Progress Layout written in Kotlin
Stars: ✭ 77 (+208%)
Mutual labels:  view
BSLoader
It's to show loading animations
Stars: ✭ 13 (-48%)
Mutual labels:  view
bpmn-visualization-js
A TypeScript library for visualizing process execution data on BPMN diagrams
Stars: ✭ 113 (+352%)
Mutual labels:  view
GameOfLifeView
A simple Android view that displays Conway's Game of Life. I've learnt the principles of TDD doing this
Stars: ✭ 20 (-20%)
Mutual labels:  view
php-mvc
Mini framework para aplicaciones PHP con el patrón MVC
Stars: ✭ 35 (+40%)
Mutual labels:  view

Skeleton Placeholder View Maven Central platform license

Overview

A Library designed to draw a Skeleton by "skinning" the view from a provided layout. Skeleton is composed of Bone with different properties, library usage defines which bones to be drawn before the view is skinned. Usually used as a Placeholder while loading a data before it is populated to a View. By using this library, creating a skeleton view is much simpler and dynamic as developers don't need to create specific skeleton layout.xml for each view, instead use this custom view to draw the shape as the specified layout.xml.

Supports the following shapes :

RectBone CircleBone

The library is developed using Kotlin, and built for interopability with Java

NOTE: The output of this library strongly depends on how you write your layout file

Preview

SkeletonPlaceholderView

Working sample on CIAYO Comics Android App:

SkeletonPlaceholderView

Setup

Gradle

    dependencies {
         implementation 'com.github.ferrytan:skeletonplaceholderview:${latestVersion}'
         ...
     }

Replace ${latestVersion} with the latest version code. See releases.

SkeletonPlaceholderView 1.1.0 and above only supports projects that have been migrated to androidx. For more information, read Google's migration guide. Please use version 1.0.2 for projects that are still using the old support library.

Sample Usage

For a working implementation, please have a look at the Sample Project

  1. Add SkeletonPlaceholderView to your layout xml:
<com.meetferrytan.skeletonplaceholderview.SkeletonPlaceholderView
        android:id="@+id/skeletonPlaceholderView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:sk_bone_corner_radius_default="2dp"
        app:sk_background_color="#ffffff"
        app:sk_bone_color_default="#cccccc"
        app:sk_bone_height_default="48dp"
        app:sk_bone_width_default="100dp"/>

See attrs.xml for all supported attributes.

  1. Skin the view programmatically by calling the method SkeletonPlaceholderView.skinView(..)
  • Simple Usage (uses default RectBone)
// KOTLIN OR JAVA
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            R.id.imgCover,
            R.id.txtGenre,
            R.id.txtTitle,
            R.id.frmSubscribeCount)
  • Specific shapes
// KOTLIN
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            CircleBone(R.id.imgCover),
            RectBone(R.id.txtGenre),
            RectBone(R.id.txtTitle),
            RectBone(R.id.frmSubscribeCount))
// JAVA
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            new CircleBone(R.id.imgCover),
            new RectBone(R.id.txtGenre),
            new RectBone(R.id.txtTitle),
            new RectBone(R.id.frmSubscribeCount))
  • Custom Shapes using Builder Pattern
// KOTLIN
// Common builder pattern
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            CircleBone.Builder(R.id.imgCover)
            	.spacing(0)
                .build(),
            RectBone.Builder(R.id.txtGenre)
            	.cornerRadius(4f)
            	.customHeight(200)
            	.customWidth(100)
            	.horizontalSpacing(2)
            	.verticalSpacing(4)
            	.build(),
            RectBone.Builder(R.id.txtTitle)
            	.build(),
            RectBone.Builder(R.id.frmSubscribeCount)
            	.build())

// DSL
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            CircleBone.Builder(R.id.imgCover)
            	.spacing(0)
                .build(),
            RectBone.Builder(R.id.txtGenre)
                .apply {
                    cornerRadius(4f)
                    customHeight(200)
                    customWidth(100)
                    horizontalSpacing(2)
                    verticalSpacing(4)
                }.build(),
            RectBone.Builder(R.id.txtTitle)
            	.build(),
            RectBone.Builder(R.id.frmSubscribeCount)
            	.build())
// JAVA
skeletonPlaceholderView.skinView(R.layout.item_sample_2,
            new CircleBone.Builder(R.id.imgCover)
            	.spacing(0)
                .build(),
            new RectBone.Builder(R.id.txtGenre)
                .cornerRadius(4f)
                .customHeight(200)
                .color(Color.parseColor("#ff0000"))
                .customWidth(100)
                .horizontalSpacing(2)
                .verticalSpacing(4)
                .build(),
            new RectBone.Builder(R.id.txtTitle)
                .build(),
            new RectBone.Builder(R.id.frmSubscribeCount)
                .build())

See a complete usage in sample code.

Once again, the output of this library STRONGLY DEPENDS on how you write your layout file

Usage in sample app is improved by using Facebook's great library shimmer-android for a shimmering effect over the SkeletonPlaceholderView

Developed By

Ferry Irawan

[email protected]

http://meetferrytan.com/

Projects/Apps using SkeletonPlaceholderView

I'd be happy to know if you're using this library to your app, feel free to contact me and i'll add it to the list

Thanks

Special thanks to:

License

Copyright 2018 Ferry Irawan

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].