CN109117223B - 一种提交请求状态提示的交互算法 - Google Patents
一种提交请求状态提示的交互算法 Download PDFInfo
- Publication number
- CN109117223B CN109117223B CN201810822371.6A CN201810822371A CN109117223B CN 109117223 B CN109117223 B CN 109117223B CN 201810822371 A CN201810822371 A CN 201810822371A CN 109117223 B CN109117223 B CN 109117223B
- Authority
- CN
- China
- Prior art keywords
- variable
- width
- color
- control
- android system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及一种提交请求状态提示的交互算法,包括如下步骤:自定义带提交状态按钮类SubmitView;设定画笔paint类及颜色;设定不同提交状态及提交结果对应的提示文字;设定默认的按钮的绘制参数;定义变量,用来控制按钮的交互响应;重写onLayout方法,获取控件的宽高值,计算控件的倒角角度,获取画笔的宽度;定义接口,用来监听回调加载成功后的操作,用来监听回调开始加载的过程;重写onDraw方法,根据当前不同的状态标识绘制图形。本发明,自定义按钮控件,能提示网络加载的过程和结果,能避免用户多次点击导致的发送多次提交请求,减轻系统开销,提升交互效果,增强网络交互的管理及体验,提高了App的开发效率。
Description
技术领域
本发明涉及交互界面设计技术领域,具体说是一种提交请求状态提示的交互算法。
背景技术
现有的交互界面(例如App中的交互界面,网页中的交互界面,等等),在向远端提交数据时,都需要至少一个按钮用于发出提交请求。
向远端提交数据需要经过网络,因此一般都需要一定的时间来等待、获取返回信息(提交结果),在此期间需要屏蔽用户继续点击以免发送多次提交请求。
在Android系统中,提供了Button点击按钮控件,但是不能根据提交时的不同状态进行UI相应的更新,也不能很好的避免用户多次点击。需要进一步对按钮控件进行优化。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种提交请求状态提示的交互算法,自定义按钮控件,能提示网络加载的过程和结果,能避免用户多次点击导致的发送多次提交请求,减轻系统开销,提升交互效果,增强网络交互的管理及体验,提高了App的开发效率。
为达到以上目的,本发明采取的技术方案是:
一种提交请求状态提示的交互算法,其特征在于,包括如下步骤:
自定义带提交状态按钮类SubmitView,继承Android系统提供的View类,用来绘制按钮及在按钮中呈现网络加载的过程和结果,
网络加载的过程用于向用户呈现提交状态,
网络加载的结果用于向用户呈现提交结果;
设定画笔paint类及颜色,
所述画笔paint类具体细分为:
变量mBorderPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的边框,
变量mTextPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的文字,
变量mBackPaint,是Android系统提供的画笔Paint类型的变量,用来绘制圆角矩形的背景,
所述颜色包括两个常量COLOR_BACK和COLOR_GREY,是Android系统提供的int数据类型,用于提供颜色的十六进制值;
设定不同提交状态及提交结果对应的提示文字,定义变量mText,用来设置自定义控件上显示的文字,是Android系统提供的String字符串类型;
设定默认的按钮的绘制参数,至少包括:
背景,
控件的宽高值,定义变量mWidth和mHeight,用来保存自定义控件的宽度和高度,是Android系统提供的int数据类型,
控件的倒角角度,定义变量mRadius,用来设置自定义控件圆形边框的角度,是Android系统提供的int数据类型;
定义以下变量,用来控制按钮的交互响应:
变量mCanClick,用来控制按钮的点击事件,是Android系统提供的布尔数据类型,
定义变量mIfReset,用来控制按钮的重置事件,是Android系统提供的布尔数据类型;
重写onLayout方法,获取控件的宽高值,计算控件的倒角角度,获取画笔的宽度;
定义接口OnProgressDone和其中的抽象方法progressDown,用来监听回调加载成功后的操作,
定义接口OnProgressStart和其中的抽象方法progressStart,用来监听回调开始加载的过程;
定义方法drawInit,用来绘制初始控件的状态,呈现圆角矩形按钮;
定义方法drawFirst,用来改变背景和字体的颜色,呈现圆形进度条;
定义方法onClick,用来处理点击事件;
定义方法drawCorrectSign,用来绘制成功提交控件的状态,呈现带对号的圆角矩形;
重写onDraw方法,根据当前不同的状态标识绘制图形,具体包括:
初始状态,绘制圆角矩形按钮,在按钮中呈现提示点击的文字,
网络加载状态,绘制圆形进度条,呈现网络加载的过程,
提交成功状态,绘制带对号的圆角矩形,在圆角矩形中呈现对号,提示提交成功。
在上述技术方案的基础上,按钮的绘制参数还包括:
边框内边距,定义常量PADDING,用于控制文字和边框的间隙,即自定义控件的内边距大小,是Android系统提供的int数据类型,
在重写onLayout方法时,控件的宽高值减去边框内边距,即为内容区域的宽和高,
定义变量mTextBounds,用来计算绘制文字所需的空间大小,是Android系统提供的Rect类型,
定义变量mStrokeWidth,用来设置画笔的宽度,是Android系统提供的int数据类型。
在上述技术方案的基础上,定义枚举AniState,用来控制按钮的交互状态,枚举值包括:
INIT,初始状态,
FIRST_START,背景和字体颜色开始改变,
FIRST_STOP,背景和字体颜色改变结束,
SECOND_START,字体大小开始改变,
SECOND_STOP,字体大小改变结束,
THIRD_START,圆角矩形按钮转变圆形进度条,
THIRD_STOP,已完成转变圆形进度条,
FOURTH_START,圆形进度条呈现进度,
FOURTH_STOP,已完成呈现进度,
FIFTH_START,圆形进度条转变带对号的圆角矩形,
FIFTH_STOP,圆角矩形按钮转变带对号的圆角矩形。
在上述技术方案的基础上,在方法onClick中,通过布尔数据类型的变量mCanClick,判断是否可以点击,当点击一次后,则把mCanClick设置为不可点击,
通过Android系统提供的View类中的方法invalidate来重新绘制控件。
在上述技术方案的基础上,重写onLayout方法,具体包括:
设定输入参数boolean changed, 是Android系统提供的布尔数据类型的变量用来标志当前自定义控件的布局是否变化,在变化时才执行本方法,
获取控件的宽高值,通过Android系统提供的View类中的方法getWidth和getHeight,获取控件的宽度和高度,
计算控件的倒角角度,首先计算控件减去内边距后内容区域的宽和高width和height,是Android系统提供的int数据类型,
width = mWidth - (PADDING * 2),
height = mHeight - (PADDING * 2),
然后根据内容区域的宽高计算的边框的角度mRadius= width/3 > height 问号height/2 : width/6,
获取画笔的宽度,首先根据边框的角度计算的边框的宽度mStrokeWidth=mRadius/12,然后调用mBorderPaint的方法setStrokeWidth来设置画笔的宽度mBorderPaint.setStrokeWidth(mStrokeWidth)。
在上述技术方案的基础上,方法drawInit,具体包括:
在用来绘制的画布canvas中,初始以下信息:
变量mBorderPaint是用来绘制圆角边框的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mBackPaint是用来绘制背景颜色的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mTextPaint是用来绘制文字的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
调用画布canvas中的方法drawRoundRect来绘制圆角矩形,
调用画笔mTextPaint中的方法setTextSize来设置字体的大小mTextPaint.setTextSize(mRadius/2),
调用画笔mTextPaint中的方法getTextBounds来获取绘制字体所需的空间大小mTextPaint.getTextBounds(mText, 0, mText.length(), mTextBounds),参数mText是要绘制的文字,
调用画布canvas中的方法drawText来绘制文字。
在上述技术方案的基础上,方法drawFirst,具体包括:
在用来绘制的画布canvas中,设定以下信息:
调用绘制背景的画笔mBackPaint中的方法setColor,设定新的背景颜色,新颜色通过getFirstColor方法获取,
调用绘制文字的画笔mTextPaint中的方法setColor,设定新的文字颜色,新颜色通过getFirstTextColor方法获取,
getFirstColor方法和getFirstTextColor方法根据当前动画的时间计算出新颜色的取值。
在上述技术方案的基础上,方法drawCorrectSign,具体包括:
在用来绘制的画布canvas中,设定以下信息:
通过变量correntPaint来绘制提交成功的对号,是Android系统提供的画笔Paint类型,
correntPaint通过方法setAntiAlias来设置抗锯齿来防止齿轮边界,
correntPaint通过方法setStyle来设置画笔的类型为轮廓类型,
correntPaint通过方法setStrokeWidth设置画笔的宽度,
correntPaint通过方法setColor设置画笔的颜色,
correntPaint通过方法setDither设置防抖动使界面更加柔和,
correntPaint通过方法setStrokeJoin设置线的连接处为圆弧连接,
correntPaint通过方法setStrokeCap设置线冒样式为圆形线冒,
计算控件中心点坐标,存入变量centerX和centerY,
设定对号的路径path,
调用画布canvas中的方法drawPath来绘制对号。
在上述技术方案的基础上,方法onClick,具体包括:
设定变量mCanClick,是Android系统提供的布尔数据类型的变量,用来判断是否可以点击,
点击后把mCanClick设置为不可点击,把当前的状态标志设置为开始,
调用方法firstAniStart,是自定义的方法用来设置动画的开始时间和动画第一阶段的结束时间,
调用方法invalidate,是Android系统提供的View类中的方法用来重新绘制控件。
在上述技术方案的基础上,重写onDraw方法,具体包括:
设定变量mAniState,是自定义AniState枚举类型的实例,用来记录当前状态类型,根据不同的状态值调用相应的方法进行绘制,
通过变量mAniState,中的方法isPlaying来判断当前动画是否继续进行,如果进行调用View中的invalidata方法进行刷新重新绘制。
本发明所述的提交请求状态提示的交互算法,自定义按钮控件,能提示网络加载的过程和结果,能避免用户多次点击导致的发送多次提交请求,减轻系统开销,提升交互效果,增强网络交互的管理及体验,提高了App的开发效率。
附图说明
本发明有如下附图:
图1本发明的流程图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图1所示,本发明所述的提交请求状态提示的交互算法,包括如下步骤:
自定义带提交状态按钮类SubmitView,继承Android系统提供的View类,用来绘制按钮及在按钮中呈现网络加载的过程和结果,
网络加载的过程用于向用户呈现提交状态,
网络加载的结果用于向用户呈现提交结果;
设定画笔paint类及颜色,
所述画笔paint类具体细分为:
变量mBorderPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的边框,
变量mTextPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的文字,
变量mBackPaint,是Android系统提供的画笔Paint类型的变量,用来绘制圆角矩形的背景,
所述颜色包括两个常量COLOR_BACK和COLOR_GREY,是Android系统提供的int数据类型,用于提供颜色的十六进制值;
设定不同提交状态及提交结果对应的提示文字,定义变量mText,用来设置自定义控件上显示的文字,是Android系统提供的String字符串类型;
设定默认的按钮的绘制参数,至少包括:
背景,
控件的宽高值,定义变量mWidth和mHeight,用来保存自定义控件的宽度和高度,是Android系统提供的int数据类型,
控件的倒角角度,定义变量mRadius,用来设置自定义控件圆形边框的角度,是Android系统提供的int数据类型;
定义以下变量,用来控制按钮的交互响应:
变量mCanClick,用来控制按钮的点击事件,是Android系统提供的布尔数据类型,
定义变量mIfReset,用来控制按钮的重置事件,是Android系统提供的布尔数据类型;
重写onLayout方法,获取控件的宽高值,计算控件的倒角角度,获取画笔的宽度;
定义接口OnProgressDone和其中的抽象方法progressDown,用来监听回调加载成功后的操作,
定义接口OnProgressStart和其中的抽象方法progressStart,用来监听回调开始加载的过程;
定义方法drawInit,用来绘制初始控件的状态,呈现圆角矩形按钮;
定义方法drawFirst,用来改变背景和字体的颜色,呈现圆形进度条;
定义方法onClick,用来处理点击事件;
定义方法drawCorrectSign,用来绘制成功提交控件的状态,呈现带对号的圆角矩形,即:方法drawCorrectSign,用来绘制类型为FIFTH_START和FIFTH_STOP时的控件的状态;
重写onDraw方法,根据当前不同的状态标识绘制图形,具体包括:
初始状态,绘制圆角矩形按钮,在按钮中呈现提示点击的文字,
网络加载状态,绘制圆形进度条,呈现网络加载的过程,
提交成功状态,绘制带对号的圆角矩形,在圆角矩形中呈现对号,提示提交成功。
在上述技术方案的基础上,按钮的绘制参数还包括:
边框内边距,定义常量PADDING,用于控制文字和边框的间隙,即自定义控件的内边距大小,是Android系统提供的int数据类型,
在重写onLayout方法时,控件的宽高值减去边框内边距,即为内容区域的宽和高,
定义变量mTextBounds,用来计算绘制文字所需的空间大小,是Android系统提供的Rect类型,
定义变量mStrokeWidth,用来设置画笔的宽度,是Android系统提供的int数据类型。
在上述技术方案的基础上,定义枚举AniState,用来控制按钮的交互状态,枚举值包括:
INIT,初始状态,
FIRST_START,背景和字体颜色开始改变,
FIRST_STOP,背景和字体颜色改变结束,
SECOND_START,字体大小开始改变,
SECOND_STOP,字体大小改变结束,
THIRD_START,圆角矩形按钮转变圆形进度条,
THIRD_STOP,已完成转变圆形进度条,
FOURTH_START,圆形进度条呈现进度,
FOURTH_STOP,已完成呈现进度,
FIFTH_START,圆形进度条转变带对号的圆角矩形,
FIFTH_STOP,圆角矩形按钮转变带对号的圆角矩形。
在上述技术方案的基础上,在方法onClick中,通过布尔数据类型的变量mCanClick,判断是否可以点击,当点击一次后,则把mCanClick设置为不可点击,
通过Android系统提供的View类中的方法invalidate来重新绘制控件。
在上述技术方案的基础上,重写onLayout方法,具体包括:
设定输入参数boolean changed, 是Android系统提供的布尔数据类型的变量用来标志当前自定义控件的布局是否变化,在变化时才执行本方法,
获取控件的宽高值,通过Android系统提供的View类中的方法getWidth和getHeight,获取控件的宽度和高度,
计算控件的倒角角度,首先计算控件减去内边距后内容区域的宽和高width和height,是Android系统提供的int数据类型,
width = mWidth - (PADDING * 2),
height = mHeight - (PADDING * 2),
然后根据内容区域的宽高计算的边框的角度mRadius= width/3 > height 问号height/2 : width/6,
获取画笔的宽度,首先根据边框的角度计算的边框的宽度mStrokeWidth=mRadius/12,然后调用mBorderPaint的方法setStrokeWidth来设置画笔的宽度mBorderPaint.setStrokeWidth(mStrokeWidth)。
例如,可采用如下代码:
protected void onLayout(boolean changed, int left, int top, intright, int bottom) {
if (changed) {
mWidth = getWidth(); mHeight = getHeight();
int width = mWidth - (PADDING * 2); int height = mHeight -(PADDING * 2);
mRadius = width/3 > height 问号 height/2 : width/6;
mStrokeWidth = mRadius/12;
mBorderPaint.setStrokeWidth(mStrokeWidth);
}
}。
在上述技术方案的基础上,方法drawInit,具体包括:
在用来绘制的画布canvas中,初始以下信息:
变量mBorderPaint是用来绘制圆角边框的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mBackPaint是用来绘制背景颜色的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mTextPaint是用来绘制文字的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
调用画布canvas中的方法drawRoundRect来绘制圆角矩形,
调用画笔mTextPaint中的方法setTextSize来设置字体的大小mTextPaint.setTextSize(mRadius/2),
调用画笔mTextPaint中的方法getTextBounds来获取绘制字体所需的空间大小mTextPaint.getTextBounds(mText, 0, mText.length(), mTextBounds),参数mText是要绘制的文字,
调用画布canvas中的方法drawText来绘制文字。
例如,可采用如下代码:
private void drawInit(Canvas canvas){
mBorderPaint.setColor(mColor);
mBackPaint.setColor(mColor);
mTextPaint.setColor(mColor);
canvas.drawRoundRect(mRect, mRadius, mRadius, mBorderPaint); 参数mRect是圆角矩形的位置,参数mRadius是圆角矩形的角度,
mTextPaint.setTextSize(mRadius/2);
mTextPaint.getTextBounds(mText, 0, mText.length(), mTextBounds);
canvas.drawText(mText, mWidth / 2 - mTextBounds.width() / 2,mHeight / 2 + mTextBounds.height() / 2, mTextPaint);
}。
在上述技术方案的基础上,方法drawFirst,具体包括:
在用来绘制的画布canvas中,设定以下信息:
调用绘制背景的画笔mBackPaint中的方法setColor,设定新的背景颜色,新颜色通过getFirstColor方法获取,
调用绘制文字的画笔mTextPaint中的方法setColor,设定新的文字颜色,新颜色通过getFirstTextColor方法获取,
getFirstColor方法和getFirstTextColor方法根据当前动画的时间计算出新颜色的取值。
例如,可采用如下代码:
private void drawFirst(Canvas canvas){
mBackPaint.setColor(getFirstColor());
mTextPaint.setColor(getFirstTextColor());
}。
getFirstColor方法定义如下
private int getFirstColor() {
return Color.argb(getFirstRatio()==1 问号 0xff : (int)(getFirstRatio() * 0xff), Color.red(mColor), Color.green(mColor), Color.blue(mColor));
}
getFirstRatio是获取动画进度,如果动画完成了,就返回0xff白色,否则,就根据进度乘以0xff白色来设置颜色。
private float getFirstRatio() {
long now = System.currentTimeMillis();
if (now >= mFirstStopT) {
mAniState = AniState.FIRST_STOP;
mAniState = AniState.SECOND_START;
return 1;
}
float ratio = (float)(now - mFirstStartT) / (float) FIRST_DURATION;
return ratio > 1 问号 1 : ratio;
}
这个函数的作用是获取第一次播放动画时候的播放比例,其中,now获取当前的时间戳,如果当前时间戳大于等于第一次动画结束时间mFirstStopT,就设置一下当前的动画状态值,返回1;否则,就根据当前时间和动画持续时间,计算出动画的执行进度ratio,并返回,这个函数在绘制文字的时候,会根据进度值来改变文字的颜色,有个渐变的过程。
在上述技术方案的基础上,方法drawCorrectSign,具体包括:
在用来绘制的画布canvas中,设定以下信息:
通过变量correntPaint来绘制提交成功的对号,是Android系统提供的画笔Paint类型,
correntPaint通过方法setAntiAlias来设置抗锯齿来防止齿轮边界,
correntPaint通过方法setStyle来设置画笔的类型为轮廓类型,
correntPaint通过方法setStrokeWidth设置画笔的宽度,
correntPaint通过方法setColor设置画笔的颜色,
correntPaint通过方法setDither设置防抖动使界面更加柔和,
correntPaint通过方法setStrokeJoin设置线的连接处为圆弧连接,
correntPaint通过方法setStrokeCap设置线冒样式为圆形线冒,
计算控件中心点坐标,存入变量centerX和centerY,
设定对号的路径path,
调用画布canvas中的方法drawPath来绘制对号。
例如,可采用如下代码:
private void drawCorrectSign(Canvas canvas, float ratio) {
Paint correctPaint = new Paint();
correctPaint.setAntiAlias(true);
correctPaint.setStyle(Paint.Style.STROKE);
correctPaint.setStrokeWidth(10f); 设置画笔的宽度为10像素,
correctPaint.setColor(0xffffffff);颜色为白色,
correctPaint.setDither(true);
correctPaint.setStrokeJoin(Paint.Join.ROUND);
correctPaint.setStrokeCap(Paint.Cap.ROUND);
int centerX = mWidth/2; int centerY = mHeight/2 + mRadius/4;
Path path = new Path();
path.moveTo(centerX - (mRadius*ratio/4), centerY - (mRadius*ratio/4));
path.lineTo(centerX, centerY);
path.lineTo(centerX + (mRadius*ratio/2), centerY -(mRadius*ratio/2));
canvas.drawPath(path, correctPaint);
}。
其中:
方法moveTo移动到对号左上角的坐标,方法lineTo连接线到中心点,再次lineTo到对号的右上角坐标点。
在上述技术方案的基础上,方法onClick,具体包括:
设定变量mCanClick,是Android系统提供的布尔数据类型的变量,用来判断是否可以点击,
点击后把mCanClick设置为不可点击,把当前的状态标志设置为开始,
调用方法firstAniStart,是自定义的方法用来设置动画的开始时间和动画第一阶段的结束时间,
调用方法invalidate,是Android系统提供的View类中的方法用来重新绘制控件。
例如,可采用如下代码:
public void onClick(View v) {
if (mCanClick) {
mCanClick = false;
if (mAniState == AniState.INIT) {
mAniState = AniState.FIRST_START;
firstAniStart();
invalidate();
}
}
}。
方法firstAniStart,用来记录动画开始执行的时间和设置动画第一阶段结束的时间,具体包括:
设定变量mFirstStartT,是Android系统提供的的长整型数据类型的变量,用来记录动画开始的时间戳,该时间戳通过Android系统提供的System类中的方法currentTimeMillis来获取系统当前的时间戳,
设定变量mFirstStopT,是Android系统提供的长整型数据类型的变量,用来计算动画第一阶段结束的时间,mFirstStopT = mFirstStartT + FIRST_DURATION,FIRST_DURATION是第一次动画执行的时间,单位是毫秒,值为300,开发者可以根据不同的项目需求,修改这个时间。
例如,可采用如下代码:
private void firstAniStart() {
mFirstStartT = System.currentTimeMillis();
mFirstStopT = mFirstStartT + FIRST_DURATION;
}。
在上述技术方案的基础上,重写onDraw方法,具体包括:
设定变量mAniState,是自定义AniState枚举类型的实例,用来记录当前状态类型,根据不同的状态值调用相应的方法进行绘制,
通过变量mAniState,中的方法isPlaying来判断当前动画是否继续进行,如果进行调用View中的invalidata方法进行刷新重新绘制。
例如,可采用如下代码:
private void onDraw(Canvas canvas){
switch (mAniState) {
case INIT: drawInit(canvas); break;
case FIRST_START: drawFirstStart(canvas); break;
case SECOND_START: drawSecondStart(canvas); break;
case THIRD_START: drawThirdStart(canvas); break;
case F OURTH_START: drawFourthStart(canvas); break;
case FIFTH_START: drawFifthStart(canvas); break;
case FIFTH_STOP: drawFirst(canvas); break;
}
if (mAniState.isPlaying()) invalidate();
}。
根据不同的状态,展现不同的内容,当绘制状态是INIT的时候,绘制的是一开始展现的状态,包括一个圆角矩形的按钮区域,中间绘制提交的文字信息,如“提交”文字;FIRST_START状态是绘制圆角矩形,但这里会调用getFirstColor来实时的根据进度改变圆角矩形的背景颜色,调用getFirstTextColor来实时的根据进度改变文字颜色;SECOND_START状态是绘制了圆角矩形的边框信息,文字和背景不变;THIRD_START状态是根据进度绘制进度,缩小圆角矩形范围,同时改变文字颜色,最后缩小到一个圆形为止;FOURTH_START状态是开始在THIRD_START状态的基础上,绘制进度值,因为THIRD_START状态已经是圆形了,所以再在上边绘制圆弧,表示当前进度值;FIFTH_START状态是开始绘制圆角矩形放大的过程,根据进度,来呈现圆角矩形放大的状态,同时,利用drawCorrectSign来绘制对号的路径;FIFTH_STOP表示完整的绘制了圆角矩形和对号。
本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (8)
1.一种提交请求状态提示的交互方法,其特征在于,包括如下步骤:
自定义带提交状态按钮类SubmitView,继承Android系统提供的View类,用来绘制按钮及在按钮中呈现网络加载的过程和结果,
网络加载的过程用于向用户呈现提交状态,
网络加载的结果用于向用户呈现提交结果;
设定画笔paint类及颜色,
所述画笔paint类具体细分为:
变量mBorderPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的边框,
变量mTextPaint,是Android系统提供的画笔Paint类型的变量,用来绘制自定义控件的文字,
变量mBackPaint,是Android系统提供的画笔Paint类型的变量,用来绘制圆角矩形的背景,
所述颜色包括两个常量COLOR_BACK和COLOR_GREY,是Android系统提供的int数据类型,用于提供颜色的十六进制值;
设定不同提交状态及提交结果对应的提示文字,定义变量mText,用来设置自定义控件上显示的文字,是Android系统提供的String字符串类型;
设定默认的按钮的绘制参数,至少包括:
背景,
控件的宽高值,定义变量mWidth和mHeight,用来保存自定义控件的宽度和高度,是Android系统提供的int数据类型,
控件的倒角角度,定义变量mRadius,用来设置自定义控件圆形边框的角度,是Android系统提供的int数据类型;
定义以下变量,用来控制按钮的交互响应:
变量mCanClick,用来控制按钮的点击事件,是Android系统提供的布尔数据类型,在方法onClick中,通过布尔数据类型的变量mCanClick,判断是否可以点击,当点击一次后,则把mCanClick设置为不可点击,
通过Android系统提供的View类中的方法invalidate来重新绘制控件;
定义变量mIfReset,用来控制按钮的重置事件,是Android系统提供的布尔数据类型;
重写onLayout方法,获取控件的宽高值,计算控件的倒角角度,获取画笔的宽度;具体包括:
设定输入参数boolean changed, 是Android系统提供的布尔数据类型的变量用来标志当前自定义控件的布局是否变化,在变化时才执行本方法,
获取控件的宽高值,通过Android系统提供的View类中的方法getWidth和getHeight,获取控件的宽度和高度,
计算控件的倒角角度,首先计算控件减去内边距后内容区域的宽和高width和height,是Android系统提供的int数据类型,
宽width等于变量mWidth减去两倍的边框内边距PADDING,
高height等于变量mHeight减去两倍的边框内边距PADDING,
然后根据内容区域的宽高计算的边框的角度mRadius,当宽width的三分之一的值大于高height,则边框的角度mRadius取值为高height的二分之一的值,否则边框的角度mRadius取值为宽width的六分之一的值,
获取画笔的宽度,首先根据边框的角度计算的边框的宽度mStrokeWidth等于mRadius/12,然后调用mBorderPaint的方法setStrokeWidth来设置画笔的宽度mBorderPaint.setStrokeWidth(mStrokeWidth);
定义接口OnProgressDone和其中的抽象方法progressDown,用来监听回调加载成功后的操作,
定义接口OnProgressStart和其中的抽象方法progressStart,用来监听回调开始加载的过程;
定义方法drawInit,用来绘制初始控件的状态,呈现圆角矩形按钮;
定义方法drawFirst,用来改变背景和字体的颜色,呈现圆形进度条;
定义方法onClick,用来处理点击事件;
定义方法drawCorrectSign,用来绘制成功提交控件的状态,呈现带对号的圆角矩形;
重写onDraw方法,根据当前不同的状态标识绘制图形,具体包括:
初始状态,绘制圆角矩形按钮,在按钮中呈现提示点击的文字,
网络加载状态,绘制圆形进度条,呈现网络加载的过程,
提交成功状态,绘制带对号的圆角矩形,在圆角矩形中呈现对号,提示提交成功。
2.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:按钮的绘制参数还包括:
边框内边距,定义常量PADDING,用于控制文字和边框的间隙,即自定义控件的内边距大小,是Android系统提供的int数据类型,
在重写onLayout方法时,控件的宽高值减去边框内边距,即为内容区域的宽和高,
定义变量mTextBounds,用来计算绘制文字所需的空间大小,是Android系统提供的Rect类型,
定义变量mStrokeWidth,用来设置画笔的宽度,是Android系统提供的int数据类型。
3.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:定义枚举AniState,用来控制按钮的交互状态,枚举值包括:
INIT,初始状态,
FIRST_START,背景和字体颜色开始改变,
FIRST_STOP,背景和字体颜色改变结束,
SECOND_START,字体大小开始改变,
SECOND_STOP,字体大小改变结束,
THIRD_START,圆角矩形按钮转变圆形进度条,
THIRD_STOP,已完成转变圆形进度条,
FOURTH_START,圆形进度条呈现进度,
FOURTH_STOP,已完成呈现进度,
FIFTH_START,圆形进度条转变带对号的圆角矩形,
FIFTH_STOP,圆角矩形按钮转变带对号的圆角矩形。
4.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:方法drawInit,具体包括:
在用来绘制的画布canvas中,初始以下信息:
变量mBorderPaint是用来绘制圆角边框的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mBackPaint是用来绘制背景颜色的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
变量mTextPaint是用来绘制文字的画笔,根据传入的颜色mColor,调用设置画笔的颜色的方法setColor,
调用画布canvas中的方法drawRoundRect来绘制圆角矩形,
调用画笔mTextPaint中的方法setTextSize来设置字体的大小mTextPaint.setTextSize(mRadius/2),
调用画笔mTextPaint中的方法getTextBounds来获取绘制字体所需的空间大小mTextPaint.getTextBounds(mText, 0, mText.length(), mTextBounds),参数mText是要绘制的文字,
调用画布canvas中的方法drawText来绘制文字。
5.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:方法drawFirst,具体包括:
在用来绘制的画布canvas中,设定以下信息:
调用绘制背景的画笔mBackPaint中的方法setColor,设定新的背景颜色,新颜色通过getFirstColor方法获取,
调用绘制文字的画笔mTextPaint中的方法setColor,设定新的文字颜色,新颜色通过getFirstTextColor方法获取,
getFirstColor方法和getFirstTextColor方法根据当前动画的时间计算出新颜色的取值。
6.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:方法drawCorrectSign,具体包括:
在用来绘制的画布canvas中,设定以下信息:
通过变量correntPaint来绘制提交成功的对号,是Android系统提供的画笔Paint类型,
correntPaint通过方法setAntiAlias来设置抗锯齿来防止齿轮边界,
correntPaint通过方法setStyle来设置画笔的类型为轮廓类型,
correntPaint通过方法setStrokeWidth设置画笔的宽度,
correntPaint通过方法setColor设置画笔的颜色,
correntPaint通过方法setDither设置防抖动使界面更加柔和,
correntPaint通过方法setStrokeJoin设置线的连接处为圆弧连接,
correntPaint通过方法setStrokeCap设置线冒样式为圆形线冒,
计算控件中心点坐标,存入变量centerX和centerY,
设定对号的路径path,
调用画布canvas中的方法drawPath来绘制对号。
7.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:方法onClick,具体包括:
设定变量mCanClick,是Android系统提供的布尔数据类型的变量,用来判断是否可以点击,
点击后把mCanClick设置为不可点击,把当前的状态标志设置为开始,
调用方法firstAniStart,是自定义的方法用来设置动画的开始时间和动画第一阶段的结束时间,
调用方法invalidate,是Android系统提供的View类中的方法用来重新绘制控件。
8.如权利要求1所述的提交请求状态提示的交互方法,其特征在于:重写onDraw方法,具体包括:
设定变量mAniState,是自定义AniState枚举类型的实例,用来记录当前状态类型,根据不同的状态值调用相应的方法进行绘制,
通过变量mAniState,中的方法isPlaying来判断当前动画是否继续进行,如果进行调用View中的invalidata方法进行刷新重新绘制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810822371.6A CN109117223B (zh) | 2018-07-24 | 2018-07-24 | 一种提交请求状态提示的交互算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810822371.6A CN109117223B (zh) | 2018-07-24 | 2018-07-24 | 一种提交请求状态提示的交互算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109117223A CN109117223A (zh) | 2019-01-01 |
CN109117223B true CN109117223B (zh) | 2021-06-25 |
Family
ID=64863307
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810822371.6A Active CN109117223B (zh) | 2018-07-24 | 2018-07-24 | 一种提交请求状态提示的交互算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109117223B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254067B (zh) * | 2021-05-25 | 2022-03-08 | 四川虹魔方网络科技有限公司 | 一种基于Rx框架防止功能抖动的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739251A (zh) * | 2008-11-17 | 2010-06-16 | 康佳集团股份有限公司 | 一种界面控件生成方法及其系统 |
CN105931285A (zh) * | 2016-04-29 | 2016-09-07 | 乐视控股(北京)有限公司 | 一种3d空间中的控件实现方法及其装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001243127A (ja) * | 2000-02-28 | 2001-09-07 | Chizaiko:Kk | インターネットのcgiシステム |
US8589946B2 (en) * | 2008-09-08 | 2013-11-19 | International Business Machines Corporation | Prevention of browser timeout |
CN101394406B (zh) * | 2008-10-22 | 2012-10-03 | 深圳市金蝶中间件有限公司 | 一种防止用户重复点击按钮的方法及装置 |
CN103455405A (zh) * | 2012-06-04 | 2013-12-18 | 阿里巴巴集团控股有限公司 | 防止按钮被重复点击的方法及系统、按钮解锁方法及系统 |
US10712821B2 (en) * | 2015-08-19 | 2020-07-14 | International Business Machines Corporation | Tactile graphical display |
CN106020704A (zh) * | 2016-05-30 | 2016-10-12 | 乐视控股(北京)有限公司 | 一种虚拟按键的触发方法及其移动终端 |
CN106095457A (zh) * | 2016-06-20 | 2016-11-09 | 浪潮电子信息产业股份有限公司 | 一种增强信息反馈用户友好性的方法 |
CN106990954A (zh) * | 2017-03-09 | 2017-07-28 | 武汉斗鱼网络科技有限公司 | 一种实现安卓系统应用程序中按钮效果的方法和系统 |
CN107678744A (zh) * | 2017-09-12 | 2018-02-09 | 平安科技(深圳)有限公司 | 应用控件样式自定义方法、装置以及计算机可读存储介质 |
-
2018
- 2018-07-24 CN CN201810822371.6A patent/CN109117223B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101739251A (zh) * | 2008-11-17 | 2010-06-16 | 康佳集团股份有限公司 | 一种界面控件生成方法及其系统 |
CN105931285A (zh) * | 2016-04-29 | 2016-09-07 | 乐视控股(北京)有限公司 | 一种3d空间中的控件实现方法及其装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109117223A (zh) | 2019-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110286905B (zh) | 一种基于Echarts的数据展示方法 | |
CN111724462B (zh) | 在Chrome浏览器中三维渲染的方法 | |
CN112527250A (zh) | 一种基于可视化的软件开发平台 | |
CN109117223B (zh) | 一种提交请求状态提示的交互算法 | |
CN111338721A (zh) | 在线交互方法、系统、电子设备和存储介质 | |
CN112686973A (zh) | 图像编辑方法及控制装置、存储介质、计算机设备 | |
CN104965813A (zh) | 文字素材的处理方法和装置 | |
CN112783660A (zh) | 虚拟场景中的资源处理方法、装置及电子设备 | |
CN114089982A (zh) | 前端页面生成方法、装置、设备和介质 | |
CN112686939A (zh) | 景深图像的渲染方法、装置、设备及计算机可读存储介质 | |
CN111167119A (zh) | 一种游戏开发展示方法、装置、设备及存储介质 | |
US20020002629A1 (en) | Method and system for interfacing application software with electronic writeboard | |
CN114863008A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN115964037A (zh) | 一种工程数据可视化低代码配置方法及系统 | |
CN115185709A (zh) | 输入法应用在Web操作系统上的跨平台实现方法及系统 | |
CN109117222B (zh) | 一种提示网络加载进度的交互按钮的实现方法 | |
CN113407183A (zh) | 界面生成方法、装置、设备及存储介质 | |
CN111459369B (zh) | 一种界面元素的筛选方法、智能终端及存储介质 | |
CN114089999A (zh) | 一种前端页面生成方法及系统 | |
CN114518859A (zh) | 显示控制方法、装置、电子设备及存储介质 | |
CN111538878A (zh) | 一种基于qt的数据采集平台数据的展示方法及装置 | |
CN112734876A (zh) | 图形绘制方法、装置、电子设备及存储介质 | |
CN109032700B (zh) | 一种基于状态控制的按钮交互方法 | |
CN106445269B (zh) | 移动终端的状态栏显示方法及移动终端 | |
CN115469869B (zh) | 一种应用界面数据可视化编辑开发工作方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |