• Stars
    star
    269
  • Rank 152,662 (Top 4 %)
  • Language
    Java
  • License
    MIT License
  • Created over 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

一个自带dialog联网请求的button。且自带多种酷炫效果:有转场效果,和正常联网请求等。支持设置圆角;支持设置背景颜色值;设置字体颜色值;字体大小;自带dialog;字体超过一行,自动滚动(带2种滚动样式);通过对动画的不同监听可以实现不同的效果。具体看README

SmartLoadingView一个自带dialog的联网请求按钮

  • 支持在任何布局上使用
  • 支持转场动画(可用于登录)
  • 支持正常网络请求且带有多种酷炫效果

添加依赖

  • 项目build.gradle添加如下
    allprojects {
     	repositories {
     		maven { url 'https://jitpack.io' }
     	}
     }
  • app build.gradle添加如下
    dependencies {
            implementation 'com.github.lihangleo2:SmartLoadingView:2.0.2'
    }

使用(下方有属性说明)

<com.lihang.smartloadview.SmartLoadingView
        android:id="@+id/smartLoadingView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自带dialog按钮"
        android:textColor="#fff"
        android:textSize="15dp"
        app:background_normal="#fff"
        app:errorMsg="联网失败文案"
        app:background_error="#ED7676"
        app:background_cannotClick="#bbbbbb"
        app:cornerRaius="30dp"
        app:textScrollMode="marquee"
        app:smart_clickable="true"
        app:speed="400"
        />

效果展示(截图分辨率低,请扫描下文二维码体验效果)

一、开启动画和转场动画的使用

1.1、动画结束后自动跳转 1.2、自己监听动画实现逻辑

1.1、动画结束后自动跳转

这里点击事件和普通的控件点击事件一致。设置setOnClickListener()即可。

smartLoadingView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                smartLoadingView.start();
                Observable.timer(2000, TimeUnit.MILLISECONDS)
                        .observeOn(AndroidSchedulers.mainThread()).subscribe(along -> {
                    smartLoadingView.onSuccess(MainActivity.this, SecondActivity.class);
                });
            }
        });

点击按钮,联网开始时,启动动画

smartLoadingView.start();

这里我用了RxJava延迟了2s 模拟联网成功。你也可以用handler延迟实现这个功能,这里用了下lambda表达式,可以忽略,只要看下面代码。

//这样既可实现,从一个页面转场动画跳转到另外一个页面(注意这样跳转,第一个页面会被finish掉)。
smartLoadingView.onSuccess(MainActivity.this, SecondActivity.class);

1.2、自己监听动画实现逻辑

前面点击事件和启动动画和 1.1 都一样,不同的时,联网成功的时候,增加动画结束的监听(这里逻辑都是自己处理,不会关闭和跳转任何页面)

smartLoadingView.onSuccess(new SmartLoadingView.AnimationFullScreenListener() {
                        @Override
                        public void animationFullScreenFinish() {
                            Toast.makeText(MainActivity.this, "监听动画结束", Toast.LENGTH_SHORT).show();
                        }
                    });

二、联网请求失败的样式

2.1、请求失败,文案显示在控件上 2.2、请求失败,回到初始状态

2.1、请求失败,文案显示在控件上

这里点击和启动动画都和上面一致。如果你xml里设置了失败文案的话,联网失败时,只需要调用

smartLoadingView.netFaile();

当然,如果你再联网前并不知道失败文案也可以这样,带入当前失败的文案

smartLoadingView.netFaile(msg);

2.2、请求失败,回到初始状态

如果你们的需求是,失败文案显示在别的地方,或者只是弹一个toast,按钮箱回到初始状态,只需要这样(这里的意思是,控件还在转圈等待,网络回调后,动画平滑回到初始状态)

smartLoadingView.backToStart();

三、正常的联网请求(目前作者用于关注)

3.1、正常的联网,正常出结果 3.2、正常联网,打勾出结果
3.3、打勾出结果,打勾消失 3.4、打勾出结果,提醒用户

//2.0.2后把关注方式做成了属性,切记,如果你想用哪种方式,务必要在xml上写上
 <attr name="click_mode">
            <!-- 正常的样式 -->
            <enum name="normal" value="1" />
            <!-- 隐藏的样式 -->
            <enum name="hide" value="2" />
            <!-- 平移到中间的样式-->
            <enum name="translate_center" value="3" />
            <!-- 走失败模式的样式-->
            <enum name="like_faile" value="4" />

        </attr>

3.1、正常的联网,正常出结果 app:click_mode="like_faile"

这里点击事件和启动动画都和之前一样。正常出结果,只需要结合失败的方法去使用,失败文案,失败背景设置成关注成功的样式,调用只需要这样

smartLoadingView.netFaile("关注成功");

再次点击后,回到初始状态。注意这里不能使用backToStart()。因为backToStart()是出结果时使用,即使你使用也不起效果,这里已经出了结果“关注成功”。所以此时,再次点击,需要如下

smartLoadingView.reset();

3.2、正常联网,打勾出结果 app:click_mode="normal"

前面都是一样的,只是出结果时,实现AnimationOKListener接口

smartLoadingView.onSuccess(new SmartLoadingView.AnimationOKListener() {
                            @Override
                            public void animationOKFinish() {
                                Toast.makeText(MainActivity.this, "关注成功", Toast.LENGTH_SHORT).show();
                            }
                        });

3.3、打勾出结果,打勾消失 app:click_mode="hide"

如果想实现抖音那样,打勾后,打勾消失,只需要实现,添加一个模式就好了,OKAnimationType.HIDE。(当然上面就是默认的OKAnimationType.NORMAL)

smartLoadingView.onSuccess(new SmartLoadingView.AnimationOKListener() {
                        @Override
                        public void animationOKFinish() {
                            Toast.makeText(MainActivity.this, "关注成功", Toast.LENGTH_SHORT).show();
                        }
                    });

3.4、打勾出结果,提醒用户 app:click_mode="translate_center"

这个就有点类似提醒效果,不管你的控件在屏幕上的任何位置,最终都会运行到屏幕中间,提醒用户,成功了。也只需添加一个模式OKAnimationType.TRANSLATION_CENTER

smartLoadingView.onSuccess(new SmartLoadingView.AnimationOKListener() {
                        @Override
                        public void animationOKFinish() {
                            Toast.makeText(MainActivity.this, "关注成功", Toast.LENGTH_SHORT).show();
                        }
                    });

3.5、上个版本很多朋友说,没有默认选中的状态。在xml里写上你的click_mode后,只需一句代码

binding.smartLoadingViewNormal.setFollow(true);

四、文字超出一行,文字自动滚动

设计这个的初衷是因为,可能按钮的错误文案太长了,按钮放不下时使用的

4.1、文字来回滚动 4.2、仿跑马灯滚动

4.1、文字来回滚动

只需要在xml里加上 app:textScrollMode="normal"。或者可以不加,因为默认滚动就是这种方式


4.2、仿跑马灯滚动

xml里只需要加上 app:textScrollMode="marquee"


五、设置不可点击状态

5.1、设置不可点击状态

5.1、设置不可点击状态

在xml里可以通过app:smart_clickable="false"进行设置。当然也能通过代码来设置

smartLoadingView.setSmartClickable(false);

六、这里作者还提供了2个小demo。登录demo和关注demo

6.1、登录demo 6.2、关注demo

可以下载demo自行查看

扫描二维体验效果(下载密码是:123456)


自定义属性

1、按钮文案

  • android:text="自带dialog按钮" 使用了textView的text文字属性

2、按钮文案颜色值

  • android:textColor="#fff" 使用了textView的textColor颜色值属性

3、按钮文案字体大小

  • android:textSize="15dp" 使用了textView的字体大小

4、正常情况下的背景颜色值

  • app:background_normal="#fff" 按钮正常的背景颜色值

5、联网失败文案

  • app:errorMsg="联网失败文案" 联网失败展示的文案,比如登录时,账号密码错误

6、联网失败下的背景颜色值

  • app:background_error="#ED7676" 联网失败时展示的背景颜色值,一般为殷红色

7、不可点击状态下的背景颜色值

  • app:background_cannotClick="#bbbbbb" 不可点击状态下的背景颜色值

8、圆角属性

  • app:cornerRaius="30dp" 背景的圆角属性

9、文字滚动模式(文字超过一行时,文字自动滚动)

  • app:textScrollMode="marquee" 比如联网失败后,失败文案太长了。文字自动滚动,这里有2种方式。1、normal来回滚动。 2、marquee跑马灯效果

10、文字滚动速度

  • app:speed="400" 文字的滚动速度。可以理解为一个文字滚动出屏幕外需要的时间

11、按钮的点击状态

  • app:smart_clickable="true" 不设置时,默认可以点击,为true。代码里也能通过 smartLoadingView9.setSmartClickable(false) 进行设置

12、这里稍微说下长宽

长宽都是用系统的layout_width和layout_height,包括设置padding。如果不设置,是有默认间距的

13、click_mode关注方式

  • 这里有四种模式,like_faile、normal、hide、translate_center;不管用哪种模式,xml一定要加上这个属性。like_faile:像联网失败的方式展示关注成功;normal:正常的关注打勾动画;hide:正常打勾关注后,按钮消失。translate_center:打勾关注后,移动到屏幕中心提醒。

关于作者。

Android工作多年了,一直向往大厂。在前进的道路上是孤独的。如果你在学习的路上也感觉孤独,请和我一起。让我们在学习道路上少些孤独


LICENSE

MIT License

Copyright (c) 2019 leo

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.

More Repositories

1

ShadowLayout

可定制化阴影的万能阴影布局ShadowLayout 3.0 震撼上线。效果赶超CardView。阴影支持x,y轴偏移,支持阴影扩散程度,支持阴影圆角,支持单边或多边不显示阴影;控件支持动态设置shape和selector(项目里再也不用画shape了);支持随意更改颜色值,支持随意更改颜色值,支持随意更改颜色值。重要的事情说三遍
Java
3,394
star
2

RichEditTextCopyToutiao

android高仿今日头条富文本编辑
C++
430
star
3

mPro

共享元素小图到大图浏览,即recycleView到viewPager,pager左右滑动,共享动画item改变
Java
273
star
4

ViewPager2Demo

关于封装ViewPager2的FragmentStateAdapter的封装,以最简单的方式实现抖音列表的上下加载,画廊效果,以及ViewPager2的各种封装
Kotlin
245
star
5

Happy-Android

使用玩Android api。实现一个RxJava + Retrofit + MVVM的项目。通俗易懂
C++
106
star
6

ImUIpro

仿微信im页面,带语音,带自定义表情
Java
94
star
7

AirRelationView

星空关系图谱
Java
84
star
8

SelfMVP

RxJava + Retrofit + MVP + Dagger2 基础框架(看完还不明白,吐槽我)
Java
81
star
9

Imgdots

在图片上做标签,图片可缩放
Java
38
star
10

EasyOk

EasyOk看的懂的okhttp封装,增强理解。支持在线缓存;支持离线缓存;支持断线重连;支持避免请求多次同一url;支持get请求;支持post请求;支持文件上传;支持文件下载及断点续传
Java
37
star
11

ChartView

一组针对统计图的自定义控件,高度定制化;折线图统计图提供了各项属性供用户定制,且带手势操作,有点像股票实线图。饼状统计图,同样提供了大量属性定制,可随意更改初始角度,添加item后会自动计算概率等等
Java
37
star
12

MoreAboutRecyclerView

这可能是最全关于recyclerView各种用法,其中也封装了基础的万能适配器,具体请看README
Java
31
star
13

HightCopyDetail

高仿药房网商品详情页面。效果流畅到你难以想象
Java
30
star
14

DataBindingLover

对DataBinding全面使用的Demo
Java
29
star
15

MyCamera

关于Android相机的自定义一些知识
Java
26
star
16

CaptureJz

一个多功能的自定义相机
Java
16
star
17

AACstu

MVVM组件AAC(Android Architecture Components) 学习demo
Java
13
star
18

TinkerDemo

微信热修复Tinker demo。30分钟不到,带你上路
Java
13
star
19

MyEmjkeyBoard

高仿微信软键盘,android系统表情转变ios表情,并支持自定义
Java
12
star
20

Dagger2Foru

关于Dagger2在java中详细使用介绍。Dagger2进阶:在Android中使用
Java
11
star
21

SmartViewPager2Adapter

关于封装ViewPager2的FragmentStateAdapter的封装,以最简单的方式实现抖音列表的上下加载,画廊效果,以及ViewPager2的各种封装
11
star
22

smartVpageAdapterlibrary

test
Kotlin
8
star
23

RecycleViewMoreAbout

recycleView侧滑删除,拖拽,删除动画,添加动画。以及横向阻尼效果
Java
7
star
24

CardScrool

卡片滑到详情,详情退出回到卡片
Java
6
star
25

official_web_copy_redbook

Bootstrap+jQuery+html5+css+javascript;原生开发官网,模仿小红书官网首页
HTML
5
star
26

More-AboutView

玩转自定义控件
Java
5
star
27

CutModuleStu

一个关于android(模块化/组件化)的demo
Java
4
star
28

SmallestWidthDemo

Android屏幕适配心德:1、最小宽度限定符;2、同时适配手机&平板;3、同时适配横竖屏切换
Java
4
star
29

easy-vue-element-admin

vue+element实现的一个简洁后台管理系统。基于vue3
Vue
3
star
30

Face-Recognition

利用camera api的一个人脸识别小demo
Java
3
star
31

My3DViewPager

画廊效果的viewpager
Java
2
star
32

RandomRecycleView

随机item个数的recycleView
Java
1
star
33

HarmoneyStudy

鸿蒙系统化学习
TypeScript
1
star
34

Taro_React_wx

Taro+React架构开发微信小程序
TypeScript
1
star
35

lihangleo2

1
star