# Skeleton **Repository Path**: jarryleo/Skeleton ## Basic Information - **Project Name**: Skeleton - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-24 - **Last Updated**: 2024-10-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Skeleton Android Simple yet powerful skeleton animation for all view in android
[![](https://jitpack.io/v/rasoulmiri/skeleton.svg)](https://jitpack.io/#rasoulmiri/skeleton) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Skeleton-orange.svg?style=flat)](https://android-arsenal.com/details/1/6120) Minimum API 17

![alt tag](https://github.com/rasoulmiri/Skeleton/blob/master/demoFile/1.gif)

See [demo project](https://github.com/rasoulmiri/Skeleton/tree/master/sample)
See [demo APK](https://github.com/rasoulmiri/Skeleton/blob/master/demoFile/sample.apk)
## Setup : Add JitPack repository in your root build.gradle at the end of repositories. allprojects { repositories { ... maven { url 'https://jitpack.io' } } } Add dependency in your app level build.gradle. dependencies { compile 'com.github.rasoulmiri:Skeleton:v1.1.4' } ## Usage XML: #### Step 1: add name space on top layout ```xml xmlns:Skeleton="http://schemas.android.com/apk/res-auto" ``` #### Step 2: use SkeletonGroup and SkeletonView in layout ```xml ``` Example: ```xml ``` #### Final step Nothing really! Just build your app, watch the magic happen ;) . # Configure XML ### SkeletonGroup * **SK_animationAutoStart:** true or false | default value true * **SK_animationDuration:** time animation | default 1000 millisecond * **SK_animationDirection:** RTL,LTR,BTT,TTB | default value is LTR * **SK_animationNormalType:** none,alpha,gradient | default value is gradient * **SK_animationFinishType:** none,alpha,gradient | default value is gradient * **SK_backgroundMainColor:** background total SkeletonGroup * **SK_BackgroundViewsColor:** background SkeletonViews in this SkeletonGroup * **SK_highLightColor:** highLight color animation ### SkeletonView * **SK_shapeType:** rect, oval,text | defult value rect * **SK_cornerRadius:** just use for shape type rect | defult value 0dp * **SK_cornerRadiusTopLeft** * **SK_cornerRadiusTopRight** * **SK_cornerRadiusBottomLeft** * **SK_cornerRadiusBottomLRight** * **SK_padding:** padding view if SK_shapeType equals rect | default value is 0dp * **SK_paddingTop** * **SK_paddingRight** * **SK_paddingLeft** * **SK_paddingBottom** * **SK_textLineNumber:** just use for shape type text | default value is 3 * **SK_textLineLastWidth:** full, threeQuarters, half, quarter | default value is threeQuarters * **SK_textLineHeight:** height of line | default value is 24dp * **SK_textLineSpaceVertical:** space vertical between lines | default value is threeQuarters 4dp ## Usage Java: #### Step 1: Create SkeletonViewGroup ```java SkeletonViewGroup skeletonViewGroup = new SkeletonViewGroup(context); ``` #### Step 2: Create ArrayList for keep views config ```java ArrayList skeletonModels = new ArrayList<>(); ``` #### Step 3: Add views to skeletonModels You should add views to skeleton models by 3 ways. Way 1: Defined by 1 view - setChildView(view) ```java skeletonModels.add(new SkeletonModelBuilder() .setChildView(view1) .build()) ``` Way 2: Defined by 1 view and custom width and height - setChildView(view) - setCustomWidth(float) - setCustomHeigh(float) ```java skeletonModels.add(new SkeletonModelBuilder() .setChildView(view1) .setCustomWidth(ConverterUnitUtil.dpToPx(getApplicationContext(), 140f)) .setCustomHeight(ConverterUnitUtil.dpToPx(getApplicationContext(), 50f)) .build()); ``` Way 3: Defined by 1 view and fill parent - setChildView(view) - setIsMatchViewBoolean(boolean) ```java skeletonModels.add(new SkeletonModelBuilder() .setChildView(view1) .setIsMatchViewBoolean(true) .build()); ``` Way 4: Defined by 2 views (draw from left-top startView to right-bottom endView) - setStartView(view) - setEndView(view) ```java skeletonModels.add(new SkeletonModelBuilder() .setStartView(view1) .setEndView(view2) .build()); ``` #### Step 4: Add models to skeletonViewGroup ```java skeletonViewGroup.setSkeletonModels(skeletonModels); ``` #### Step 5: Add SkeletonViewGroup to layout ```java ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); mainLayoutExample.addView(skeletonViewGroup, layoutParams); ``` #### Final step Nothing really! Just build your app, watch the magic happen ;) . Example: ```java SkeletonViewGroup skeletonViewGroup = new SkeletonViewGroup(getApplicationContext()); ArrayList skeletonModels = new ArrayList<>(); // Add view skeletonModels.add(new SkeletonModelBuilder() .setChildView(btn1) .setIsMatchViewBoolean(true) //MatchView .build()); skeletonModels.add(new SkeletonModelBuilder() .setStartView(btn2) // AddView start .setEndView(btn3)// AddView end .build()); skeletonModels.add(new SkeletonModelBuilder() .setChildView(btn4)// AddView .setCustomWidth(ConverterUnitUtil.dpToPx(getApplicationContext(), 140f)) // CustomWidth .setCustomHeight(ConverterUnitUtil.dpToPx(getApplicationContext(), 50f)) // CustomHeight .build()); skeletonViewGroup.setSkeletonModels(skeletonModels); // Add SkeletonViewGroup ViewGroup.LayoutParams layout = new ViewGroup.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) mainLayout.addView(skeletonViewGroup, layout); ``` ## SkeletonModelBuilder ```java new SkeletonModelBuilder() .setChildView(view) .setCustomHeight(float) .setCustomHeight(float) .setStartView(view) .setEndView(view) .setIsMatchViewBoolean(boolean) .setShapeType(SkeletonModel.SHAPE_TYPE_RECT) -> SHAPE_TYPE_RECT, SHAPE_TYPE_OVAL, SHAPE_TYPE_TEXT .setPadding(float) .setPaddingTop(float) .setPaddingBottom(float) .setPaddingLeft(float) .setPaddingRight(float) .setCornerRadius(int) .setCornerRadiusTopRight(int) .setCornerRadiusTopLeft(int) .setCornerRadiusBottomLRight(int) .setCornerRadiusBottomLeft(int) .build(); ``` ```java skeletonGroup.setSkeletonListener(new SkeletonGroup.SkeletonListener() { @Override public void onStartAnimation() { ... } @Override public void onFinishAnimation() { ... } }); ``` for use in RecyclerView and Adapter See sample 1 activity in [this project](https://github.com/rasoulmiri/Skeleton/tree/master/sample)
## Contributing You are welcome to contribute with issues, PRs or suggestions.