安卓自定義View實現圖片上傳進度顯示(仿QQ)
實現原理很簡單,首先我們上傳圖片時需要一個進度值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
相關文章
- 安卓自定義View進階: 圖片文字安卓View
- 『自定義View實戰』—— 仿ios圖示下載viewViewiOS
- vxe-upload 上傳圖片顯示進度
- 打造可顯示上傳內容的自定義進度條
- 自定義view實現圓角圖片View
- 自定義SeekBar顯示進度
- Android自定義View之高仿QQ健康AndroidView
- django 實現圖片上傳和顯示操作Django
- Django實現圖片上傳並前端頁面顯示Django前端
- Android自定義View–仿QQ音樂歌詞AndroidView
- 自定義view - 進度條View
- 自定義上傳圖片拼圖遊戲遊戲
- 自定義View:畫布實現自定義View(折線圖的實現)View
- Android自定義View--仿QQ音樂歌詞AndroidView
- Typora中自定義命令上傳圖片
- 自定義SeekBar 實時顯示百分比進度
- 高仿QQ 傳送圖片高亮HaloProgressViewView
- 自定義View合輯(5)-仿QQ郵箱下拉重新整理View
- 安卓自定義 View 進階:貝塞爾曲線安卓View
- [安卓] 16、ListView和GridView結合顯示單元實現自定義列表顯示效果安卓View
- Simple WPF: S3實現MINIO大檔案上傳並顯示上傳進度S3
- 自定義View:實現炫酷的點贊特效(仿即刻)View特效
- iOS Swift 仿微信聊天圖片顯示iOSSwift
- 基於uploadify.js實現多檔案上傳和上傳進度條的顯示JS
- vxe-upload 上傳附件顯示進度
- 安卓自定義 View 進階:Path 完結篇(偽)安卓View
- 安卓自定義View進階:繪製基本形狀安卓View
- Android Paint應用之自定義View實現進度條控制元件AndroidAIView控制元件
- Android自定義View——從零開始實現水波浪進度框AndroidView
- Android自定義View——從零開始實現圓形進度條AndroidView
- CoordinatorLayout、AppBarLayout實現上滑隱藏圖片,下滑顯示圖片APP
- app直播原始碼,el-button自定義圖片顯示APP原始碼
- Android自定義View之圖片外形特效——輕鬆實現圓角和圓形圖片AndroidView特效
- 安卓自定義優惠券View安卓View
- 自定義Drawable:實現文字生成圖片
- 自定義drawable實現圓角圖片
- 自定義View:自定義屬性(自定義按鈕實現)View
- vue 實現貼上上傳圖片Vue