android 自定义ProgressBar 文字跟随进度效果
2017-11-24 10:05
811 查看
![](http://ovji4jgcd.bkt.clouddn.com/blog/171124/fC5k16dB54.gif)
1 字体适配
private void textSizeAdaptive() { //1.获取当前设备的屏幕大小 DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); //2.计算与你开发时设定的屏幕大小的纵横比(这里假设你开发时定的屏幕大小是480*800) int screenWidth = displayMetrics.widthPixels; int screenHeight = displayMetrics.heightPixels; float ratioWidth = (float) screenWidth / 1080; float ratioHeight = (float) screenHeight / 1920; ratio = Math.min(ratioWidth, ratioHeight); if (ratioWidth != ratioHeight) { if (ratio == ratioWidth) { offsetLeft = 0; offsetTop = Math.round((screenHeight - 1920 * ratio) / 2); } else { offsetLeft = Math.round((screenWidth - 1080 * ratio) / 2); offsetTop = 0; } } //3.根据上一步计算出来的最小纵横比来确定字体的大小(假定在1080*1920屏幕下字体大小设定为35) TEXT_SIZE = Math.round(textsize * ratio); }
onDraw
@Override protected synchronized void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); canvas.save(); mText = (getProgress() * 100 / getMax()) + "%"; Rect rect = new Rect(); mPaint.getTextBounds(leftText, 0, leftText.length(), rect); int y = (getHeight() / 2) - rect.centerY(); //在进度条上画上自定义文本 canvas.drawText(leftText, 5, y, mPaint); int width = rect.width(); //进度 float radio = getProgress() * 1.0f / getMax(); float progressPosX = (int) (mRealWidth * radio); //起始点 int beginX = 10 + width; //结束点 float textWidth = mPaint.measureText(mText); float endX = mRealWidth - textWidth; if (beginX > progressPosX- textWidth) { canvas.drawText(mText, beginX, y, mPaint); } else if (progressPosX- textWidth > endX) { canvas.drawText(mText, endX, y, mPaint); } else { canvas.drawText(mText, progressPosX - textWidth, y, mPaint); } canvas.restore(); }
下载地址 http://download.csdn.net/download/liudao7994/10130885
相关文章推荐
- Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
- Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
- Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
- Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
- Android自定义进度条-带文本(文字进度)的水平进度条(ProgressBar)
- android自定义圆弧进度条,可拖拽的progressBar
- 自定义圆形progressbar(包含进度动画效果)
- android ProgressBar 实现自定义进度条
- android开发之自定义Seekbar滑动条,文字跟随滑动按钮一起滑动
- Android 自定义带进度显示的半圆形进度条ArcTextProgressBar
- Android自定义带动画的半圆环型进度效果
- Android 自定义圆形旋转进度条,仿微博头像加载效果
- android中实现PopupWindow跟随ProgressBar进度显示
- android之自定义webView之头部进度加载效果
- android progressbar 使用自定义图片时的左右两端圆角效果实现
- Android自定义view实现水波纹进度球效果
- 【android】解决自定义样式progressbar的进度显示问题
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- Android 自定义Dialog,文字动态加载效果。
- Android自定义TextView实现动态的文字效果BlingBling