AdPlayBanner:功能丰富、一键式使用的图片轮播插件

概述

AdPlayBanner:功能丰富、一键式使用的图片轮播插件

详细

代码下载:http://www.demodashi.com/demo/11312.html

AdPlayBanner是一个Android平台基于ViewPager实现的轮播图插件,主要用以自动或者手动地播放轮播图,提供了Fresco、Picasso、Glide等图片加载方式供用户使用,以及多种图片切换动画,设置轮播时间,设置数据源顺序,提供不同分页指示器等功能,实现了一键式、灵活式的控件使用方式。下面是效果图:

目前AdPlayBanner已经开源到了Github上面,大家可以在Github上面查看本控件的Demo,或者直接使用。

Github地址为:https://github.com/ryanlijianchang/AdPlayBanner

一、使用方法

1.添加依赖

首先,在项目级别的build.gradle文件添加依赖:

allprojects {repositories {...maven { url 'https://jitpack.io' }}
}

然后,在模块目录下的build.gradle文件添加依赖:

dependencies {compile 'com.github.ryanlijianchang:AdPlayBanner:v0.2'
}

2.在布局文件中添加控件

在布局文件中添加AdPlayBanner控件,根据自己的需要设置高度,注意,控件需要在一个布局(可以是LinearLayout,RelativeLayout,FrameLayout等)之内。

<com.ryane.banner_lib.AdPlayBannerandroid:id="@+id/game_banner"android:layout_width="match_parent"android:layout_height="200dp" />

3.在Activity中绑定控件

mAdPlayBanner = (AdPlayBanner) findViewById(R.id.game_banner);

4.添加网络权限

由于加载的是网络图片,所以需要在Manifests文件中添加网络请求权限

<uses-permission android:name="android.permission.INTERNET" />

5.初始化Fresco

默认使用Fresco加载图片,所以按照Fresco官方做法,需要在Application创建时初始化Fresco,常规做法如下:

(1) 创建MyApplication类继承Application,然后在onCreate()方法中初始化Fresco:

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();Fresco.initialize(this);}
}

(2) 在Manifests文件中标签中增加 android:name="你的类名":

<applicationandroid:name=".MyApplication"...>...</application>

当然,如果你不使用Fresco加载,以上步骤可以跳过。

6.一键式使用

AdPlayBanner使用了Builder设计模式,所以可以通过一键式写法来直接装载AdPlayBanner,当然也可以使用常规写法。在使用之前需要先设置数据源,使用ArrayList来封装数据,而AdPageInfo是一个封装好的Bean类,封装如下:

public class AdPageInfo implements Parcelable {public String title;    // 广告标题public String picUrl;   // 广告图片urlpublic String clickUlr; // 图片点击urlpublic int order;       // 顺序
}

在设置完数据源mDatas之后,使用Builder模式写法,一句话就可以使用AdPlayBanner了。注意,setUp()方法必须在调用完所有API之后,最后调用:

mAdPlayBanner.setInfoList(mDatas).setUp();

当然,你也可以使用常规写法:

mAdPlayBanner.setInfoList(mDatas);
mAdPlayBanner.setUp();

7.关闭AdPlayBanner

在显示AdPlayBanner的页面生命周期到达onDestroy()时,建议调用mAdPlayBanner.stop()方法结束AdPlayBanner,避免内存泄漏。

二、功能介绍

1.自定义数据顺序

在调用setUp()方法之前,我们需要设置数据源,每一页的数据使用AdPageInfo来封装,它里面就有一个int型变量order,我们通过给每一个AdPageInfo赋值order,AdPlayBanner就会自动按照order的大小来排序,如:

我们封装了三个数据到ArrayList里面,按顺序是图片1->图片2->图片3

List<AdPageInfo> mDatas = new ArrayList<>();
AdPageInfo info1 = new AdPageInfo("图片1", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_1.jpg", "链接1", 3);
AdPageInfo info2 = new AdPageInfo("图片2", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_2.jpg", "链接2", 2);
AdPageInfo info3 = new AdPageInfo("图片3", "http://osjnd854m.bkt.clouddn.com/pic1_meitu_3.jpg", "链接3", 1);
mDatas.add(info1);
mDatas.add(info2);
mDatas.add(info3);

装载之后运行,可见轮播顺序是按照order的顺序来播放:

2.无限循环轮播

很多轮播插件没有实现无限循环轮播这个功能, 而在AdPlayBanner上得到了实现,如下图可见,当我们无限循环滑动时,插件仍能正常运行:

3.支持三种图片加载方式

目前比较主流的Fresco、Picasso、Glide三种图片加载方式在AdPlayBanner中都支持,至于三者的区别我就不赘述了,默认是使用Fresco方式加载,具体调用方法setImageLoadType(ImageLoaderType type),只需要将传入数据设置为:FRESCOGLIDEPICASSO其中一种即可,同样,也是可以通过代码一键式使用,例如使用Glide方式加载(其他加载方式使用类似),使用方法如下:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setImageLoadType(Glide)    // 设置Glide类型的图片加载方式.setUp();

4.支持多种ScaleType

在AdPlayBanner中,可以根据用户需要设置图片的ScaleType,具体效果和ImageView的ScaleType一致,默认是使用FIT_XY,但是在AdPlayBanner中比ImageView少了一种MATRIX类型,在AdPlayBanner中具体支持的ScaleType有如下:FIT_XYFIT_STARTFIT_CENTERFIT_ENDCENTERCENTER_CROPCENTER_INSIDE其中,具体调用方法setImageViewScaleType(ScaleType scaleType),只需要将具体的ScaleType传入即可,同样,也是可以通过代码一键式使用,例如设置ScaleType为FIT_START(其他类似),使用方法如下:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setImageViewScaleType(FIT_START)   // 设置FIT_START类型的ScaleType.setUp();

5.支持不同页码指示器

在AdPlayBanner中,提供了数字型点型空型页码指示器,用户可以通过调用setIndicatorType(IndicatorType type),传入NONE_INDICATORNUMBER_INDICATORPOINT_INDICATOR其中一种,即可显示对应的页码指示器,三种页码指示器对应效果如下:

(1) NONE_INDICATOR:空型页码指示器

(2) NUMBER_INDICATOR:数字页码指示器

(3) POINT_INDICATOR:点型页码指示器

使用方法也是非常简单,如我需要使用数字型页码指示器,使用方法如下:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(NUMBER_INDICATOR)     //使用数字页码指示器.setUp();

此外,你也可以调用setNumberViewColor(int normalColor, int selectedColor, int numberColor)来修改数字型页码指示器的样式,normalColor为数字没选中时的背景颜色,selectedColor为数字选中时的背景颜色,numberColor为数字的字体颜色,例如我通过调用这个方法,把三个颜色都改变掉(注意:传入int型颜色必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效),使用方法如下:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(NUMBER_INDICATOR)     //使用数字页码指示器.setNumberViewColor(0xff00ffff, 0xffff3333, 0xff0000ff).setUp();

得到如下效果:

6.添加灵活性标题

在AdPlayBanner中,只需要调用addTitleView(TitleView mTitleView),就可以插入标题了,并且该标题的灵活性很强,可以根据用户需要修改标题的背景、位置、字体大小、padding、magin等,先上一个提供的默认效果:

由于是使用了默认的效果,所以用法也是非常简单:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(POINT_INDICATOR)     //使用数字页码指示器.addTitleView(TitleView.getDefaultTitleView(getApplicationContext()))  // 使用默认标题.setUp();

我们可以看到我们通过调用addTitleView(TitleView mTitleView),传入一个TitleView即可以生成标题,而上面是调用了AdPlayBanner提供的一个默认标题,当然,我们也说了这个标题的灵活性很强,就是我们可以设置TitleView的属性,我们来看一下TitleView提供了哪些API:

  • TitleView setTitleColor(int color):设置标题字体颜色,传入color必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效。

  • setPosition(Gravity gravity):设置标题在AdPlayBanner中的位置,有PARENT_TOP,PARENT_BOTTOM,PARENT_CENTER三个取值,分别位于父布局顶部,父布局底部,父布局中间。

  • setViewBackground(int color):设置标题的背景颜色,传入int型颜色必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效。

  • TitleView setTitleSize(int size):设置标题的字体大小,单位是sp。

  • setTitleMargin(int left, int top, int right, int bottom):设置标题的四个方向margin值,单位是dp。

  • setTitlePadding(int left, int top, int right, int bottom):设置标题的四个方向padding值,单位是dp。

同样,TitleView也是支持Builder模式的写法,例如我自定义一个TitleVIew并加到AdPlayBanner中,使用方法如下:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(POINT_INDICATOR)     // 使用数字页码指示器.addTitleView(new TitleView(getApplicationContext())    // 创建新的TitleView.setPosition(PARENT_TOP).setTitleColor(0xffffffff)          // 设置字体颜色.setViewBackground(0x9944ff18)      // 设置标题背景颜色.setTitleSize(18)                   // 设置字体大小.setTitleMargin(0,0,2,0)           // 设置margin值.setTitlePadding(2,2,2,2))          // 设置padding值.setUp();

效果如下:

7.支持多样式切换动画

由于AdPlayBanner是基于ViewPager实现的,所以AdPlayBanner和ViewPager一样,同样支持自定义的切换动画,只需要通过调用setPageTransfromer(ViewPager.PageTransformer transformer)方法,传入一个PageTransformer,即可改变它的切换样式,AdPlayBanner中提供了三种现成的切换方式:

  • FadeInFadeOutTransformer:淡入淡出效果

  • RotateDownTransformer:旋转效果

  • ZoomOutPageTransformer: 空间切换效果

使用起来也是非常简单,例如使用ZoomOutPageTransformer切换效果:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(POINT_INDICATOR)     // 使用数字页码指示器.setBannerBackground(0xff000000)       // 设置背景颜色.setPageTransfromer(new ZoomOutPageTransformer())   // 设置切换效果.setUp();

当然,你也可以自定义一个transformer实现ViewPager.PageTransformer接口,并重写transformPage(View view, float position)方法即可实现自定义的切换效果。

8.设置是否自动轮播

通过调用setAutoPlay(boolean autoPlay),传入boolean值控制是否自动播放的开关,传入true为自动,传入false为手动。

9.设置自动滑动间隔时间

通过调用setInterval(int interval),传入int型的时间(单位ms),即可改变AdPlayBanner自动轮播时的切换时间。

10.设置点击事件监听器

AdPlayBanner支持点击事件监听,通过调用setOnPageClickListener(OnPageClickListener l),传入OnPageClickListener,即可完成AdPlayBanner的点击监听,使用方法非常简单:

mAdPlayBanner.setInfoList((ArrayList<AdPageInfo>) mDatas).setIndicatorType(POINT_INDICATOR)     // 使用数字页码指示器.setOnPageClickListener(new AdPlayBanner.OnPageClickListener() {@Overridepublic void onPageClick(AdPageInfo info, int postion) {// 点击操作}}).setUp();

三、API

AdPlayBanner:实现轮播效果的控件

AdPlayBanner解释备注
addTitleView(TitleView mTitleView)添加一个TitleView可以通过TitleView.getDefaultTitleView(Context context)来使用默认的TitleView或者通过new Title()的方式传入
setBannerBackground(int color)设置AdPlayBanner的背景颜色传入color必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效
setIndicatorType(IndicatorType type)设置页码指示器类型传入NONE_INDICATORNUMBER_INDICATORPOINT_INDICATOR其中一种
setInterval(int interval)设置自动轮播时的切换时间单位ms
setImageLoadType(ImageLoaderType type)设置图片加载方式传入FRESCOGLIDEPICASSO其中一种
setPageTransfromer(ViewPager.PageTransformer transformer)设置切换动画,如果不设置动画,设置为null提供了FadeInFadeOutTransformerRotateDownTransformerZoomOutPageTransformer三种,也可以传入自定义的TransFormer
setNumberViewColor(int normalColor, int selectedColor, int numberColor)设置数字页码的颜色normalColor 数字正常背景颜色,selectedColor 数字选中背景颜色,numberColor 数字字体颜色
setOnPageClickListener(OnPageClickListener l)设置事件点击监听器传入一个OnPageClickListener
setImageViewScaleType(ScaleType scaleType)设置图片的ScaleType传入FIT_XYFIT_STARTFIT_CENTERFIT_ENDCENTERCENTER_CROPCENTER_INSIDE其中一种
setAutoPlay(boolean autoPlay)设置是否自动播放默认为true 自动播放,传入false为手动
setInfoList(ArrayList pageInfos)设置Banner的数据源传入必须为AdPageInfo类型的ArrayList
setUp()装载AdPlayBanner必须在以上所有方法调用完之后才能调用

TitleView : 标题控件

TitleView解释备注
getDefaultTitleView(Context context)获取一个默认的TitleView传入一个Context
setTitleSize(int size)设置字体大小单位sp
setTitleColor(int color)设置字体颜色传入color必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效
setViewBackground(int color)设置标题背景传入color必须ARGB8888的颜色类型,或者通过资源文件定义颜色再获取才有效
setPosition(Gravity gravity)设置标题在Banner的位置只能PARENT_TOP,PARENT_BOTTOM,PARENT_CENTER其中一个值
setTitleMargin(int left, int top, int right, int bottom)设置标题的margin值单位dp
setTitlePadding(int left, int top, int right, int bottom)设置标题的padding值单位dp

AdPageInfo:AdPlayView指定的数据源

AdPageInfo解释备注
AdPageInfo(String title, String picUrl, String clickUlr, int order)构造方法 
void setTitle(String title)设置标题 
String getTitle()获取标题 
void setPicUrl(String picUrl)设置图片源地址 
String getPicUrl()获取图片链接 
void setClickUlr(String clickUlr)设置点击事件地址 
String getClickUlr()获取点击事件链接 
void setOrder(int order)设置排序的优先级设置了order,AdPlayBanner会根据order的大小由小到大排序
int getOrder()获取排序优先级 

四、版本特性

v0.1

  1. 基本框架搭建完成;

V0.2

  1. 支持定义数据顺序;

  2. 无限循环轮播;

  3. 支持Fresco、Glide、Picasso三种图片加载方式;

  4. 支持多种ScaleType;

  5. 支持点型、数字型、空型页码指示器;支持修改数字型页码器的样式;

  6. 支持灵活性标题;支持修改标题的位置、字体大小、颜色、边距值等属性;

  7. 支持多样式切换动画;

  8. 支持设置自动轮播开关;

  9. 自定义自动滑动间隔时间;

  10. 提供点击事件监听器;

  11. 支持修改AdPlayBanner的背景颜色;

V0.3

  1. 修复了静态变量造成的内存泄漏问题;

  2. 提供手动结束Banner播放的接口;

五、Demo

如果大家在使用在仍然有问题,可以通过下载Demo来学习,当然,大家更可以通过查看源代码来学习如何自定义一个轮播控件。

项目结构截图:

image.png

六、后记

AdPlayBanner作为作者的第一个开源控件,作者也是非常用心认真地完成,这个过程也学习到很多东西,可能其中会遇到很多错误,所以希望大家可以多多包涵,然后把错误提到Issues里面,作者会在看到的第一时间进行修正。在后面的时间里,作者也会将更多的特性加到这个控件里面,所以希望大家可以加个star,以作为对作者的小小鼓励。 当然,如果你想第一时间联系到作者,不妨尝试以下联系方式:

  • Email:liji.anchang@163.com

  • CSDN:http://blog.csdn.net/ljcitworld

  • Github:https://github.com/ryanlijianchang

 

代码下载:http://www.demodashi.com/demo/11312.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

 

转载于:https://www.cnblogs.com/demodashi/p/8491104.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pycharm运行模型时怎么设置权重?_使用AMP和Tensor Cores得到更快速,更节省内存的PyTorch模型...

点击上方“AI派”&#xff0c;关注公众号&#xff0c;选择加“星标“或“置顶”导读只需要添加几行代码&#xff0c;就可以得到更快速&#xff0c;更省显存的PyTorch模型。你知道吗&#xff0c;在1986年Geoffrey Hinton就在Nature论文中给出了反向传播算法&#xff1f;此外&…

引入静态变量_Common Lisp变量的一些事情

Lisp-1 vs Lisp-2[1]Scheme的求值模型非常简单&#xff1a;只是用一个名字空间&#xff0c;所有表达式中相应位置的值应该是明确的。Common Lisp和Scheme最大的不同是&#xff0c;函数名字空间和数据的名字空间是分离的。操作函数名字空间的语句包括&#xff0c;defun&#xff…

c理c利用计算机怎么弹,通过汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的...

通过汇编一个简单的C程序&#xff0c;分析汇编代码理解计算机是如何工作的计算机的工作方式&#xff1a;现代计算机的基本体系结构都是采用冯诺依曼结构&#xff0c;冯诺依曼的设计思想最重要之处是"存储程序"的这个概念。计算机的工作过程&#xff0c;就是执行程序的…

Linux安装MySQL的两种方法

原文链接&#xff1a;http://blog.csdn.net/superchanon/article/details/8546254 --------------------------------------------------------------------------------------- 1. 运行平台&#xff1a;CentOS 6.3 x86_64&#xff0c;基本等同于RHEL 6.3 2. 安装…

jenkins 手动执行_想知道如何用Jenkins自动执行Python脚本输出测试报告?

前言在用python做自动化测试时&#xff0c;我们写好代码&#xff0c;然后需要执行才能得到测试报告&#xff0c;这时我们可以通过 Jenkins 来进一步完成自动化工作。借助Jenkins&#xff0c;我们可以结合 Git/SVN 自动拉取代码&#xff0c;可以设置定时构建&#xff0c;接着就可…

VR 影院,约吗?

世界第一家 VR 影院已经开张&#xff0c;朋友&#xff0c;去不&#xff1f; 世界第一家 VR 影院正式开张 &#xff08;无大屏的 VR 电影院&#xff09; 在被称为 VR 元年的 2016 年&#xff0c;越来越多的人加入了这个新兴的领域&#xff0c;各种传统应用也在被 VR 包装之后以…

redis cluster 分布式锁_关于分布式锁原理的一些学习与思考redis分布式锁,zookeeper分布式锁...

首先分布式锁和我们平常讲到的锁原理基本一样&#xff0c;目的就是确保&#xff0c;在多个线程并发时&#xff0c;只有一个线程在同一刻操作这个业务或者说方法、变量。在一个进程中&#xff0c;也就是一个jvm 或者说应用中&#xff0c;我们很容易去处理控制&#xff0c;在jdk …

sp烘焙流程_小手雷-PBR材质流程(一)——(基本材质)

小手雷-PBR材质流程(一)Substance Painter生存手册经过了12个章节的讲解后&#xff0c;已经完结了(&#xff61;&#xff65;ω&#xff65;&#xff61;)相信大家经过了生存手册这一基础教程过后&#xff0c;对Substance Painter这款软件已经有了比较坚实的基础了&#xff0c;…

怎样呵护友谊_呵护真正的友情,助力漫长的人生

友情&#xff0c;即友谊&#xff0c;是指朋友和朋友之间的感情。它是一种很美妙的东西&#xff0c;可以让你在失落的时候变得高兴起来&#xff0c;可以让你走出苦海&#xff0c;去迎接新的人生。它就像一种你无法说出又可以感到快乐无比的东西。只有拥有真正朋友的人&#xff0…

【Day41】Python之路——AJAX

什么是AJAX AJAX Asynchronous JavaScript and XML&#xff08;异步的 JavaScript 和 XML&#xff09;。 优点: 不重新加载整个页面的情况下&#xff0c;可以与服务器交换数据并更新部分网页内容 不需要任何浏览器插件&#xff0c;但需要用户允许JavaScript在浏览器上执行 同源…

aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?

OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文&#xff01;)命令行界面&#xff1a;openssl aes-256-cbc -salt -in filename -out filename.encPython以PyCrypto包的形式支持AES&#xff0c;但它只提供工具。如何使用Python / PyCrypto解密使用OpenSSL加密的文件&#…

VUE-搜索过滤器

VUE非常实用的搜索过滤&#xff0c;喜欢点个赞哦 废话不多说&#xff0c;先来看看效果 1 引入vue <script src"https://cdn.jsdelivr.net/npm/vue"></script>2 HTML <div id"app"><input v-modelsearch /><ul v-if"search…

单选按钮必填会有红色选中提示吗_为什么单选按钮和复选框不能共存?

以下内容由摹客团队翻译整理&#xff0c;仅供学习交流&#xff0c;摹客设计协作一站式云平台&#xff0c;从产品、设计到开发&#xff0c;摹客来解决。单选按钮和复选框长期以来一直都是容易导致用户困惑的组件。这两个组件通常用于相同的情景下&#xff0c;但看起来又完全不同…

程序包org.junit.jupiter.api不存在

在跑项目的时候遇到这个问题&#xff0c;去看pom文件一切正常&#xff0c;也引入了这个依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope&…

thrift介绍及应用(一)—介绍

原文&#xff1a;http://blog.csdn.net/guxch/article/details/12157151 ------------------------------------------------------------------------------------ 一、概述 Thrift是Apache下的一个子项目&#xff0c;最早是Facebook的项目&#xff0c;后来Facebook提供给Apa…

matlab双目相机标定校正_基于双目视觉的无人机避障算法(一)

讲述在10月到12月所做的所有工作对于一个无人机自主避障来说&#xff0c;存在着以下流程&#xff1a;感知&#xff1a;障碍物检测、行人检测、目标检测SLAM&#xff1a;为无人机提供位置估计&#xff0c;构建稀疏环境地图路径规划&#xff1a;规划一条从当前位置到目标位置的移…

计算机无法播放,如果无法播放计算机mp4文件怎么办?

FireStar365接受1. 下载并安装最新版本的视频播放器(例如: Storm Video).2. 在硬盘中找到MP4视频文件.3. 右键单击该文件&#xff0c;然后选择打开方法“ Storm Video”.4. 可以双击打开页面.zxc942128835将mp4链接到计算机&#xff0c;打开磁盘&#xff0c;单击菜单栏上的工具…

thrift介绍及应用(二)—简单应用

原文&#xff1a;http://blog.csdn.net/guxch/article/details/12162131 ----------------------------------------------------------------------------------- 【接上文“thrift介绍及应用&#xff08;一&#xff09;—介绍”】 六、一个最简单的实例 Thrift文件&#xf…

打游戏的教育意义

夜色已深&#xff0c;一个男孩子还在打游戏。门忽然开了&#xff0c;妈妈走了进来&#xff0c;她把一碗阳春面摆在桌子上。说&#xff1a;"歇息一会儿&#xff0c;趁热把这碗面吃了吧。"孩子嗯了一声&#xff0c;眼睛没有离开屏幕。妈妈生怕打搅孩子&#xff0c;悄悄…

标准评分卡分数计算原理_评分卡的形式、刻度及应用场景

&#xfeff; 看到有伙伴提问&#xff1a;①我们的评分卡做好后&#xff0c;后续的使用策略是什么呀&#xff0c;都有哪些方向&#xff1f; ②评分卡分数切割点如何定&#xff0c;制定的业务逻辑是什么&#xff1f;其实&#xff0c;这个问题不好回答&#xff0c;也好回答。一方…