安卓自定义View实现图片上传进度显示(仿QQ)
来源:互联网 发布:情定三生知夏的床戏 编辑:程序博客网 时间:2024/05/29 11:43
实现原理很简单,首先我们上传图片时需要一个进度值progress,这个不管是自己写的上传的方法还是使用第三方开源库,其次,需要自定义一个View并重写onDraw方法,此例中的进度是开启了一个线程,然后模仿进度递增,然后将进度值通过自定义View调用一个自定义方法传进自定义View并根据进度进行重绘。
绘制分为三部分:
1.绘制矩形(图片面积)上半部分阴影区;
2.绘制矩形(图片面积)下半部分非阴影区;
3.绘制中间进度值(文字);
onDraw代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@Override
protected
void
onDraw(Canvas canvas) {
super
.onDraw(canvas);
mPaint.setAntiAlias(
true
);
// 消除锯齿
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(Color.parseColor(
"#70000000"
));
//半透明
canvas.drawRect(
0
,
0
, getWidth(), getHeight()-getHeight()*progress/
100
, mPaint);
mPaint.setColor(Color.parseColor(
"#00000000"
));
//全透明
canvas.drawRect(
0
, getHeight()-getHeight()*progress/
100
, getWidth(), getHeight(), mPaint);
mPaint.setTextSize(
30
);
mPaint.setColor(Color.parseColor(
"#FFFFFF"
));
mPaint.setStrokeWidth(
2
);
Rect rect=
new
Rect();
mPaint.getTextBounds(
"100%"
,
0
,
"100%"
.length(), rect);
//确定文字的宽度
canvas.drawText(progress+
"%"
, getWidth()/
2
-rect.width()/
2
,getHeight()/
2
, mPaint);
}
传入进度值的方法:
1
2
3
4
public
void
setProgress(
int
progress){
this
.progress=progress;
postInvalidate();
};
主界面调用方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
customView=(CustomView6) findViewById(R.id.customView);
//模拟图片上传进度
new
Thread(
new
Runnable() {
@Override
public
void
run() {
while
(
true
){
if
(progress==
100
){
//图片上传完成
handler.sendEmptyMessage(SUCCESS);
return
;
}
progress++;
customView.setProgress(progress);
try
{
Thread.sleep(
200
);
//暂停0.2秒
}
catch
(InterruptedException e){
e.printStackTrace();
}
}
}
}).start();
demo下载地址:http://download.csdn.net/detail/baiyuliang2013/8690773
0 0
- 安卓自定义View实现图片上传进度显示(仿QQ)
- 安卓自定义View实现图片上传进度显示(仿QQ)
- 安卓自定义View实现图片上传进度显示(仿QQ)
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- android自定义View实现图片上传进度显示(仿手机QQ上传效果)
- 自定义View实现图片上传进度显示
- Android 自定义阴影进度实现仿QQ图片上传
- Android自定义View——仿QQ等级天数进度
- 自定义View实现类似QQ图片上传的效果
- 自定义View-圆球进度的实现(仿360波浪进度)
- 自定义View实现安卓裁剪图片
- 实现自定义view(2):仿Android QQ多屏幕显示ListView的效果
- 安卓下载网络图片显示进度
- Android自定义View,仿QQ显示用户等级
- 圆形进度条(包括仿QQ图片加载进度图)
- 安卓自定义View——PictureGuide一款不错的图片导航,可实现图片显示滑动到哪一张
- 圆形进度圈显示,仿QQ运动
- PAT (Advanced Level) 1056. Mice and Rice (25) 模拟比赛,用queue辅助
- webapp
- mysql编码设置
- spring中@value注解需要注意
- jQuery判断浏览器是移动端还是电脑端自动跳转
- 安卓自定义View实现图片上传进度显示(仿QQ)
- 黑马程序员---c语言字符串输入总结
- Android中的Service服务绑定
- oracle数据库在ibatis的批处理
- 初学iOS UI 用于交流与学习
- 内联成员函数与重载成员函数
- java入门相关
- 剑指Offer面试题7(Java版):用两个栈实现队列与用两个队列实现栈
- 【剑指Offer面试题】 九度OJ1386:旋转数组的最小数字