From 3496022c6016eac9cde4bd25bc326df11c9a952c Mon Sep 17 00:00:00 2001 From: lyy <511455842@qq.com> Date: Tue, 27 Sep 2016 21:16:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B2=A1=E5=81=9A=E5=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.name | 1 + .idea/codeStyleSettings.xml | 231 ++++++++++++++ .idea/gradle.xml | 11 +- .idea/misc.xml | 16 - .../arialyy/simple/activity/MainActivity.java | 14 +- .../simple/activity/SimpleTestActivity.java | 299 +++++++++--------- .../simple/adapter/DownloadAdapter.java | 83 ++--- .../com/arialyy/simple/base/BaseActivity.java | 11 +- .../arialyy/simple/base/BaseApplication.java | 9 +- .../com/arialyy/simple/base/BaseModule.java | 9 +- .../HorizontalProgressBarWithNumber.java | 295 ++++++++--------- cache/build/mPro.properties | 0 12 files changed, 594 insertions(+), 385 deletions(-) create mode 100644 .idea/.name create mode 100644 .idea/codeStyleSettings.xml create mode 100644 cache/build/mPro.properties diff --git a/.idea/.name b/.idea/.name new file mode 100644 index 00000000..c0ab3076 --- /dev/null +++ b/.idea/.name @@ -0,0 +1 @@ +DownloadUtil \ No newline at end of file diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml new file mode 100644 index 00000000..e53fdd43 --- /dev/null +++ b/.idea/codeStyleSettings.xml @@ -0,0 +1,231 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 276576f1..a1cceb93 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -3,9 +3,8 @@ diff --git a/.idea/misc.xml b/.idea/misc.xml index 75318f72..5d199810 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -27,22 +27,6 @@ - - - - - - - - - - - Android - - - - - diff --git a/app/src/main/java/com/arialyy/simple/activity/MainActivity.java b/app/src/main/java/com/arialyy/simple/activity/MainActivity.java index 3dc93dc0..f117a160 100644 --- a/app/src/main/java/com/arialyy/simple/activity/MainActivity.java +++ b/app/src/main/java/com/arialyy/simple/activity/MainActivity.java @@ -1,22 +1,22 @@ package com.arialyy.simple.activity; import android.support.v7.widget.RecyclerView; -import butterknife.Bind; + import com.arialyy.simple.R; import com.arialyy.simple.base.BaseActivity; import com.arialyy.simple.databinding.ActivityMainBinding; +import butterknife.Bind; + /** * Created by Lyy on 2016/9/27. */ public class MainActivity extends BaseActivity { - @Bind(R.id.list) - RecyclerView mList; - - @Override protected int setLayoutId() { - return R.layout.activity_main; - } + @Bind(R.id.list) RecyclerView mList; + @Override protected int setLayoutId() { + return R.layout.activity_main; + } } diff --git a/app/src/main/java/com/arialyy/simple/activity/SimpleTestActivity.java b/app/src/main/java/com/arialyy/simple/activity/SimpleTestActivity.java index 3f103496..a891db06 100644 --- a/app/src/main/java/com/arialyy/simple/activity/SimpleTestActivity.java +++ b/app/src/main/java/com/arialyy/simple/activity/SimpleTestActivity.java @@ -10,167 +10,166 @@ import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; -import butterknife.Bind; + import com.arialyy.downloadutil.util.DownLoadUtil; import com.arialyy.downloadutil.util.Util; import com.arialyy.simple.R; import com.arialyy.simple.base.BaseActivity; import com.arialyy.simple.databinding.ActivitySimpleBinding; + import java.net.HttpURLConnection; +import butterknife.Bind; + public class SimpleTestActivity extends BaseActivity { - private static final int DOWNLOAD_PRE = 0x01; - private static final int DOWNLOAD_STOP = 0x02; - private static final int DOWNLOAD_FAILE = 0x03; - private static final int DOWNLOAD_CANCEL = 0x04; - private static final int DOWNLOAD_RESUME = 0x05; - private static final int DOWNLOAD_COMPLETE = 0x06; - private ProgressBar mPb; - private String mDownloadUrl = - "http://static.gaoshouyou.com/d/12/0d/7f120f50c80d2e7b8c4ba24ece4f9cdd.apk"; - private DownLoadUtil mUtil; - private Button mStart, mStop, mCancel; - private TextView mSize; - @Bind(R.id.toolbar) Toolbar toolbar; - - private Handler mUpdateHandler = new Handler() { - @Override public void handleMessage(Message msg) { - super.handleMessage(msg); - switch (msg.what) { - case DOWNLOAD_PRE: - mSize.setText(Util.formatFileSize((Long) msg.obj)); - mStart.setEnabled(false); - break; - case DOWNLOAD_FAILE: - Toast.makeText(SimpleTestActivity.this, "下载失败", Toast.LENGTH_SHORT).show(); - break; - case DOWNLOAD_STOP: - Toast.makeText(SimpleTestActivity.this, "暂停下载", Toast.LENGTH_SHORT).show(); - mStart.setText("恢复"); - mStart.setEnabled(true); - break; - case DOWNLOAD_CANCEL: - mPb.setProgress(0); - Toast.makeText(SimpleTestActivity.this, "取消下载", Toast.LENGTH_SHORT).show(); - mStart.setEnabled(true); - mStart.setText("开始"); - break; - case DOWNLOAD_RESUME: - Toast.makeText(SimpleTestActivity.this, "恢复下载,恢复位置 ==> " + Util.formatFileSize((Long) msg.obj), - Toast.LENGTH_SHORT).show(); - mStart.setEnabled(false); - break; - case DOWNLOAD_COMPLETE: - Toast.makeText(SimpleTestActivity.this, "下载完成", Toast.LENGTH_SHORT).show(); - mStart.setEnabled(true); - mCancel.setEnabled(false); - mStop.setEnabled(false); - break; - } + private static final int DOWNLOAD_PRE = 0x01; + private static final int DOWNLOAD_STOP = 0x02; + private static final int DOWNLOAD_FAILE = 0x03; + private static final int DOWNLOAD_CANCEL = 0x04; + private static final int DOWNLOAD_RESUME = 0x05; + private static final int DOWNLOAD_COMPLETE = 0x06; + private ProgressBar mPb; + private String mDownloadUrl = "http://static.gaoshouyou.com/d/12/0d/7f120f50c80d2e7b8c4ba24ece4f9cdd.apk"; + private DownLoadUtil mUtil; + private Button mStart, mStop, mCancel; + private TextView mSize; + @Bind(R.id.toolbar) Toolbar toolbar; + + private Handler mUpdateHandler = new Handler() { + @Override public void handleMessage(Message msg) { + super.handleMessage(msg); + switch (msg.what) { + case DOWNLOAD_PRE: + mSize.setText(Util.formatFileSize((Long) msg.obj)); + mStart.setEnabled(false); + break; + case DOWNLOAD_FAILE: + Toast.makeText(SimpleTestActivity.this, "下载失败", Toast.LENGTH_SHORT).show(); + break; + case DOWNLOAD_STOP: + Toast.makeText(SimpleTestActivity.this, "暂停下载", Toast.LENGTH_SHORT).show(); + mStart.setText("恢复"); + mStart.setEnabled(true); + break; + case DOWNLOAD_CANCEL: + mPb.setProgress(0); + Toast.makeText(SimpleTestActivity.this, "取消下载", Toast.LENGTH_SHORT).show(); + mStart.setEnabled(true); + mStart.setText("开始"); + break; + case DOWNLOAD_RESUME: + Toast.makeText(SimpleTestActivity.this, "恢复下载,恢复位置 ==> " + Util.formatFileSize((Long) msg.obj), Toast.LENGTH_SHORT).show(); + mStart.setEnabled(false); + break; + case DOWNLOAD_COMPLETE: + Toast.makeText(SimpleTestActivity.this, "下载完成", Toast.LENGTH_SHORT).show(); + mStart.setEnabled(true); + mCancel.setEnabled(false); + mStop.setEnabled(false); + break; + } + } + }; + + @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + init(); + } + + @Override protected int setLayoutId() { + return R.layout.activity_simple; + } + + @Override protected void init(Bundle savedInstanceState) { + super.init(savedInstanceState); + setSupportActionBar(toolbar); + init(); + } + + private void init() { + mPb = (ProgressBar) findViewById(R.id.progressBar); + mStart = (Button) findViewById(R.id.start); + mStop = (Button) findViewById(R.id.stop); + mCancel = (Button) findViewById(R.id.cancel); + mSize = (TextView) findViewById(R.id.size); + mUtil = new DownLoadUtil(); } - }; - - @Override protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - init(); - } - - @Override protected int setLayoutId() { - return R.layout.activity_simple; - } - - @Override protected void init(Bundle savedInstanceState) { - super.init(savedInstanceState); - setSupportActionBar(toolbar); - init(); - } - - private void init() { - mPb = (ProgressBar) findViewById(R.id.progressBar); - mStart = (Button) findViewById(R.id.start); - mStop = (Button) findViewById(R.id.stop); - mCancel = (Button) findViewById(R.id.cancel); - mSize = (TextView) findViewById(R.id.size); - mUtil = new DownLoadUtil(); - } - - public void onClick(View view) { - switch (view.getId()) { - case R.id.start: - start(); - break; - case R.id.stop: - stop(); - break; - case R.id.cancel: - cancel(); - break; + + public void onClick(View view) { + switch (view.getId()) { + case R.id.start: + start(); + break; + case R.id.stop: + stop(); + break; + case R.id.cancel: + cancel(); + break; + } } - } - - private void start() { - mUtil.download(this, mDownloadUrl, - Environment.getExternalStorageDirectory().getPath() + "/test.apk", - new DownLoadUtil.DownloadListener() { - long fileSize = 1; - - @Override public void onPreDownload(HttpURLConnection connection) { - super.onPreDownload(connection); - mPb.setMax(100); - fileSize = connection.getContentLength(); - mUpdateHandler.obtainMessage(DOWNLOAD_PRE, fileSize).sendToTarget(); - } - - @Override public void onStart(long startLocation) { - super.onStart(startLocation); - } - - @Override public void onChildResume(long resumeLocation) { - super.onChildResume(resumeLocation); - } - - @Override public void onChildComplete(long finishLocation) { - super.onChildComplete(finishLocation); - } - - @Override public void onProgress(long currentLocation) { - super.onProgress(currentLocation); - mPb.setProgress((int) (currentLocation * 100 / fileSize)); - } - - @Override public void onStop(long stopLocation) { - super.onStop(stopLocation); - mUpdateHandler.obtainMessage(DOWNLOAD_STOP).sendToTarget(); - } - - @Override public void onCancel() { - super.onCancel(); - mUpdateHandler.obtainMessage(DOWNLOAD_CANCEL).sendToTarget(); - } - - @Override public void onResume(long resumeLocation) { - super.onResume(resumeLocation); - mUpdateHandler.obtainMessage(DOWNLOAD_RESUME, resumeLocation).sendToTarget(); - } - - @Override public void onFail() { - super.onFail(); - mUpdateHandler.obtainMessage(DOWNLOAD_FAILE).sendToTarget(); - } - - @Override public void onComplete() { - super.onComplete(); - mUpdateHandler.obtainMessage(DOWNLOAD_COMPLETE).sendToTarget(); - } + + private void start() { + mUtil.download(this, mDownloadUrl, Environment.getExternalStorageDirectory().getPath() + "/test.apk", new DownLoadUtil.DownloadListener() { + long fileSize = 1; + + @Override public void onPreDownload(HttpURLConnection connection) { + super.onPreDownload(connection); + mPb.setMax(100); + fileSize = connection.getContentLength(); + mUpdateHandler.obtainMessage(DOWNLOAD_PRE, fileSize).sendToTarget(); + } + + @Override public void onStart(long startLocation) { + super.onStart(startLocation); + } + + @Override public void onChildResume(long resumeLocation) { + super.onChildResume(resumeLocation); + } + + @Override public void onChildComplete(long finishLocation) { + super.onChildComplete(finishLocation); + } + + @Override public void onProgress(long currentLocation) { + super.onProgress(currentLocation); + mPb.setProgress((int) (currentLocation * 100 / fileSize)); + } + + @Override public void onStop(long stopLocation) { + super.onStop(stopLocation); + mUpdateHandler.obtainMessage(DOWNLOAD_STOP).sendToTarget(); + } + + @Override public void onCancel() { + super.onCancel(); + mUpdateHandler.obtainMessage(DOWNLOAD_CANCEL).sendToTarget(); + } + + @Override public void onResume(long resumeLocation) { + super.onResume(resumeLocation); + mUpdateHandler.obtainMessage(DOWNLOAD_RESUME, resumeLocation).sendToTarget(); + } + + @Override public void onFail() { + super.onFail(); + mUpdateHandler.obtainMessage(DOWNLOAD_FAILE).sendToTarget(); + } + + @Override public void onComplete() { + super.onComplete(); + mUpdateHandler.obtainMessage(DOWNLOAD_COMPLETE).sendToTarget(); + } }); - } + } - private void stop() { - mUtil.stopDownload(); - } + private void stop() { + mUtil.stopDownload(); + } - private void cancel() { - mUtil.cancelDownload(); - } + private void cancel() { + mUtil.cancelDownload(); + } } diff --git a/app/src/main/java/com/arialyy/simple/adapter/DownloadAdapter.java b/app/src/main/java/com/arialyy/simple/adapter/DownloadAdapter.java index 949b3cf6..72e2b0e3 100644 --- a/app/src/main/java/com/arialyy/simple/adapter/DownloadAdapter.java +++ b/app/src/main/java/com/arialyy/simple/adapter/DownloadAdapter.java @@ -4,69 +4,72 @@ import android.content.Context; import android.util.SparseArray; import android.view.View; import android.widget.Button; -import butterknife.Bind; + import com.arialyy.absadapter.common.AbsHolder; import com.arialyy.absadapter.recycler_view.AbsRVAdapter; import com.arialyy.downloadutil.entity.DownloadEntity; import com.arialyy.simple.R; import com.arialyy.simple.widget.HorizontalProgressBarWithNumber; + import java.util.HashMap; import java.util.List; import java.util.Map; +import butterknife.Bind; + /** * Created by Lyy on 2016/9/27. * 下载列表适配器 */ public class DownloadAdapter extends AbsRVAdapter { - private static final String TAG = "DownloadAdapter"; - private Map mProgress = new HashMap<>(); - private SparseArray mPositions = new SparseArray<>(); + private static final String TAG = "DownloadAdapter"; + private Map mProgress = new HashMap<>(); + private SparseArray mPositions = new SparseArray<>(); - public DownloadAdapter(Context context, List data) { - super(context, data); - int i = 0; - for (DownloadEntity entity : data) { - mProgress.put(entity.getDownloadUrl(), entity.getCurrentProgress()); - mPositions.append(i, entity.getDownloadUrl()); - i++; + public DownloadAdapter(Context context, List data) { + super(context, data); + int i = 0; + for (DownloadEntity entity : data) { + mProgress.put(entity.getDownloadUrl(), entity.getCurrentProgress()); + mPositions.append(i, entity.getDownloadUrl()); + i++; + } } - } - @Override protected MyHolder getViewHolder(View convertView, int viewType) { - return new MyHolder(convertView); - } + @Override protected MyHolder getViewHolder(View convertView, int viewType) { + return new MyHolder(convertView); + } - @Override protected int setLayoutId(int type) { - return R.layout.item_download; - } + @Override protected int setLayoutId(int type) { + return R.layout.item_download; + } - public synchronized void setProgress(String url, long currentPosition) { - mProgress.put(url, currentPosition); - notifyItemChanged(indexItem(url)); - } + public synchronized void setProgress(String url, long currentPosition) { + mProgress.put(url, currentPosition); + notifyItemChanged(indexItem(url)); + } - private int indexItem(String url) { - return mPositions.indexOfValue(url); - } + private int indexItem(String url) { + return mPositions.indexOfValue(url); + } - @Override protected void bindData(MyHolder holder, int position, DownloadEntity item) { - //holder.progress.setProgress(item.getCurrentProgress()); - long size = item.getFileSize(); - int current = 0; - if (size == 0){ - current = 0; + @Override protected void bindData(MyHolder holder, int position, DownloadEntity item) { + //holder.progress.setProgress(item.getCurrentProgress()); + long size = item.getFileSize(); + int current = 0; + if (size == 0) { + current = 0; + } + current = (int) (mProgress.get(item.getDownloadUrl()) * 100 / item.getFileSize()); + holder.progress.setProgress(current); } - current = (int) (mProgress.get(item.getDownloadUrl()) * 100 / item.getFileSize()); - holder.progress.setProgress(current); - } - class MyHolder extends AbsHolder { - @Bind(R.id.progressBar) HorizontalProgressBarWithNumber progress; - @Bind(R.id.bt) Button bt; + class MyHolder extends AbsHolder { + @Bind(R.id.progressBar) HorizontalProgressBarWithNumber progress; + @Bind(R.id.bt) Button bt; - public MyHolder(View itemView) { - super(itemView); + public MyHolder(View itemView) { + super(itemView); + } } - } } diff --git a/app/src/main/java/com/arialyy/simple/base/BaseActivity.java b/app/src/main/java/com/arialyy/simple/base/BaseActivity.java index 6a1013bd..74a5a1f9 100644 --- a/app/src/main/java/com/arialyy/simple/base/BaseActivity.java +++ b/app/src/main/java/com/arialyy/simple/base/BaseActivity.java @@ -2,17 +2,18 @@ package com.arialyy.simple.base; import android.databinding.ViewDataBinding; import android.os.Bundle; + import com.arialyy.frame.core.AbsActivity; /** * Created by Lyy on 2016/9/27. */ public abstract class BaseActivity extends AbsActivity { - @Override protected void dataCallback(int result, Object data) { + @Override protected void dataCallback(int result, Object data) { - } + } - @Override protected void init(Bundle savedInstanceState) { - super.init(savedInstanceState); - } + @Override protected void init(Bundle savedInstanceState) { + super.init(savedInstanceState); + } } diff --git a/app/src/main/java/com/arialyy/simple/base/BaseApplication.java b/app/src/main/java/com/arialyy/simple/base/BaseApplication.java index df28de99..c497cb97 100644 --- a/app/src/main/java/com/arialyy/simple/base/BaseApplication.java +++ b/app/src/main/java/com/arialyy/simple/base/BaseApplication.java @@ -1,14 +1,15 @@ package com.arialyy.simple.base; import android.app.Application; + import com.arialyy.frame.core.AbsFrame; /** * Created by Lyy on 2016/9/27. */ public class BaseApplication extends Application { - @Override public void onCreate() { - super.onCreate(); - AbsFrame.init(this); - } + @Override public void onCreate() { + super.onCreate(); + AbsFrame.init(this); + } } diff --git a/app/src/main/java/com/arialyy/simple/base/BaseModule.java b/app/src/main/java/com/arialyy/simple/base/BaseModule.java index 87994558..055446ac 100644 --- a/app/src/main/java/com/arialyy/simple/base/BaseModule.java +++ b/app/src/main/java/com/arialyy/simple/base/BaseModule.java @@ -1,13 +1,14 @@ package com.arialyy.simple.base; import android.content.Context; + import com.arialyy.frame.module.AbsModule; /** * Created by Lyy on 2016/9/27. */ -public class BaseModule extends AbsModule{ - public BaseModule(Context context) { - super(context); - } +public class BaseModule extends AbsModule { + public BaseModule(Context context) { + super(context); + } } diff --git a/app/src/main/java/com/arialyy/simple/widget/HorizontalProgressBarWithNumber.java b/app/src/main/java/com/arialyy/simple/widget/HorizontalProgressBarWithNumber.java index daf84fe6..ae3bf9c8 100644 --- a/app/src/main/java/com/arialyy/simple/widget/HorizontalProgressBarWithNumber.java +++ b/app/src/main/java/com/arialyy/simple/widget/HorizontalProgressBarWithNumber.java @@ -7,174 +7,157 @@ import android.graphics.Paint; import android.util.AttributeSet; import android.util.TypedValue; import android.widget.ProgressBar; + import com.arialyy.simple.R; public class HorizontalProgressBarWithNumber extends ProgressBar { - private static final int DEFAULT_TEXT_SIZE = 10; - private static final int DEFAULT_TEXT_COLOR = 0XFFFC00D1; - private static final int DEFAULT_COLOR_UNREACHED_COLOR = 0xFFd3d6da; - private static final int DEFAULT_HEIGHT_REACHED_PROGRESS_BAR = 2; - private static final int DEFAULT_HEIGHT_UNREACHED_PROGRESS_BAR = 2; - private static final int DEFAULT_SIZE_TEXT_OFFSET = 10; - /** - * painter of all drawing things - */ - protected Paint mPaint = new Paint(); - /** - * color of progress number - */ - protected int mTextColor = DEFAULT_TEXT_COLOR; - /** - * size of text (sp) - */ - protected int mTextSize = sp2px(DEFAULT_TEXT_SIZE); - /** - * offset of draw progress - */ - protected int mTextOffset = dp2px(DEFAULT_SIZE_TEXT_OFFSET); - /** - * height of reached progress bar - */ - protected int mReachedProgressBarHeight = dp2px(DEFAULT_HEIGHT_REACHED_PROGRESS_BAR); - /** - * color of reached bar - */ - protected int mReachedBarColor = DEFAULT_TEXT_COLOR; - /** - * color of unreached bar - */ - protected int mUnReachedBarColor = DEFAULT_COLOR_UNREACHED_COLOR; - /** - * height of unreached progress bar - */ - protected int mUnReachedProgressBarHeight = dp2px(DEFAULT_HEIGHT_UNREACHED_PROGRESS_BAR); - /** - * view width except padding - */ - protected int mRealWidth; - protected boolean mIfDrawText = true; - protected static final int VISIBLE = 0; - - public HorizontalProgressBarWithNumber(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public HorizontalProgressBarWithNumber(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - obtainStyledAttributes(attrs); - mPaint.setTextSize(mTextSize); - mPaint.setColor(mTextColor); - } + private static final int DEFAULT_TEXT_SIZE = 10; + private static final int DEFAULT_TEXT_COLOR = 0XFFFC00D1; + private static final int DEFAULT_COLOR_UNREACHED_COLOR = 0xFFd3d6da; + private static final int DEFAULT_HEIGHT_REACHED_PROGRESS_BAR = 2; + private static final int DEFAULT_HEIGHT_UNREACHED_PROGRESS_BAR = 2; + private static final int DEFAULT_SIZE_TEXT_OFFSET = 10; + /** + * painter of all drawing things + */ + protected Paint mPaint = new Paint(); + /** + * color of progress number + */ + protected int mTextColor = DEFAULT_TEXT_COLOR; + /** + * size of text (sp) + */ + protected int mTextSize = sp2px(DEFAULT_TEXT_SIZE); + /** + * offset of draw progress + */ + protected int mTextOffset = dp2px(DEFAULT_SIZE_TEXT_OFFSET); + /** + * height of reached progress bar + */ + protected int mReachedProgressBarHeight = dp2px(DEFAULT_HEIGHT_REACHED_PROGRESS_BAR); + /** + * color of reached bar + */ + protected int mReachedBarColor = DEFAULT_TEXT_COLOR; + /** + * color of unreached bar + */ + protected int mUnReachedBarColor = DEFAULT_COLOR_UNREACHED_COLOR; + /** + * height of unreached progress bar + */ + protected int mUnReachedProgressBarHeight = dp2px(DEFAULT_HEIGHT_UNREACHED_PROGRESS_BAR); + /** + * view width except padding + */ + protected int mRealWidth; + protected boolean mIfDrawText = true; + protected static final int VISIBLE = 0; - @Override protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { - int width = MeasureSpec.getSize(widthMeasureSpec); - int height = measureHeight(heightMeasureSpec); - setMeasuredDimension(width, height); - mRealWidth = getMeasuredWidth() - getPaddingRight() - getPaddingLeft(); - } - - private int measureHeight(int measureSpec) { - int result = 0; - int specMode = MeasureSpec.getMode(measureSpec); - int specSize = MeasureSpec.getSize(measureSpec); - if (specMode == MeasureSpec.EXACTLY) { - result = specSize; - } else { - float textHeight = (mPaint.descent() - mPaint.ascent()); - result = (int) (getPaddingTop() + getPaddingBottom() + Math.max( - Math.max(mReachedProgressBarHeight, mUnReachedProgressBarHeight), Math.abs(textHeight))); - if (specMode == MeasureSpec.AT_MOST) { - result = Math.min(result, specSize); - } + public HorizontalProgressBarWithNumber(Context context, AttributeSet attrs) { + this(context, attrs, 0); } - return result; - } - /** - * get the styled attributes - */ - private void obtainStyledAttributes(AttributeSet attrs) { - // init values from custom attributes - final TypedArray attributes = - getContext().obtainStyledAttributes(attrs, R.styleable.HorizontalProgressBarWithNumber); - mTextColor = - attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_text_color, - DEFAULT_TEXT_COLOR); - mTextSize = (int) attributes.getDimension( - R.styleable.HorizontalProgressBarWithNumber_progress_text_size, mTextSize); - mReachedBarColor = - attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_reached_color, - mTextColor); - mUnReachedBarColor = - attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_unreached_color, - DEFAULT_COLOR_UNREACHED_COLOR); - mReachedProgressBarHeight = (int) attributes.getDimension( - R.styleable.HorizontalProgressBarWithNumber_progress_reached_bar_height, - mReachedProgressBarHeight); - mUnReachedProgressBarHeight = (int) attributes.getDimension( - R.styleable.HorizontalProgressBarWithNumber_progress_unreached_bar_height, - mUnReachedProgressBarHeight); - mTextOffset = (int) attributes.getDimension( - R.styleable.HorizontalProgressBarWithNumber_progress_text_offset, mTextOffset); - int textVisible = - attributes.getInt(R.styleable.HorizontalProgressBarWithNumber_progress_text_visibility, - VISIBLE); - if (textVisible != VISIBLE) { - mIfDrawText = false; + public HorizontalProgressBarWithNumber(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + obtainStyledAttributes(attrs); + mPaint.setTextSize(mTextSize); + mPaint.setColor(mTextColor); } - attributes.recycle(); - } - @Override protected synchronized void onDraw(Canvas canvas) { - canvas.save(); - canvas.translate(getPaddingLeft(), getHeight() / 2); - boolean noNeedBg = false; - float radio = getProgress() * 1.0f / getMax(); - float progressPosX = (int) (mRealWidth * radio); - String text = getProgress() + "%"; - // mPaint.getTextBounds(text, 0, text.length(), mTextBound); - float textWidth = mPaint.measureText(text); - float textHeight = (mPaint.descent() + mPaint.ascent()) / 2; - if (progressPosX + textWidth > mRealWidth) { - progressPosX = mRealWidth - textWidth; - noNeedBg = true; + @Override protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int width = MeasureSpec.getSize(widthMeasureSpec); + int height = measureHeight(heightMeasureSpec); + setMeasuredDimension(width, height); + mRealWidth = getMeasuredWidth() - getPaddingRight() - getPaddingLeft(); } - // draw reached bar - float endX = progressPosX - mTextOffset / 2; - if (endX > 0) { - mPaint.setColor(mReachedBarColor); - mPaint.setStrokeWidth(mReachedProgressBarHeight); - canvas.drawLine(0, 0, endX, 0, mPaint); + + private int measureHeight(int measureSpec) { + int result = 0; + int specMode = MeasureSpec.getMode(measureSpec); + int specSize = MeasureSpec.getSize(measureSpec); + if (specMode == MeasureSpec.EXACTLY) { + result = specSize; + } else { + float textHeight = (mPaint.descent() - mPaint.ascent()); + result = (int) (getPaddingTop() + getPaddingBottom() + Math.max(Math.max(mReachedProgressBarHeight, mUnReachedProgressBarHeight), Math.abs(textHeight))); + if (specMode == MeasureSpec.AT_MOST) { + result = Math.min(result, specSize); + } + } + return result; } - // draw progress bar - // measure text bound - if (mIfDrawText) { - mPaint.setColor(mTextColor); - canvas.drawText(text, progressPosX, -textHeight, mPaint); + + /** + * get the styled attributes + */ + private void obtainStyledAttributes(AttributeSet attrs) { + // init values from custom attributes + final TypedArray attributes = getContext().obtainStyledAttributes(attrs, R.styleable.HorizontalProgressBarWithNumber); + mTextColor = attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_text_color, DEFAULT_TEXT_COLOR); + mTextSize = (int) attributes.getDimension(R.styleable.HorizontalProgressBarWithNumber_progress_text_size, mTextSize); + mReachedBarColor = attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_reached_color, mTextColor); + mUnReachedBarColor = attributes.getColor(R.styleable.HorizontalProgressBarWithNumber_progress_unreached_color, DEFAULT_COLOR_UNREACHED_COLOR); + mReachedProgressBarHeight = (int) attributes.getDimension(R.styleable.HorizontalProgressBarWithNumber_progress_reached_bar_height, mReachedProgressBarHeight); + mUnReachedProgressBarHeight = (int) attributes.getDimension(R.styleable.HorizontalProgressBarWithNumber_progress_unreached_bar_height, mUnReachedProgressBarHeight); + mTextOffset = (int) attributes.getDimension(R.styleable.HorizontalProgressBarWithNumber_progress_text_offset, mTextOffset); + int textVisible = attributes.getInt(R.styleable.HorizontalProgressBarWithNumber_progress_text_visibility, VISIBLE); + if (textVisible != VISIBLE) { + mIfDrawText = false; + } + attributes.recycle(); } - // draw unreached bar - if (!noNeedBg) { - float start = progressPosX + mTextOffset / 2 + textWidth; - mPaint.setColor(mUnReachedBarColor); - mPaint.setStrokeWidth(mUnReachedProgressBarHeight); - canvas.drawLine(start, 0, mRealWidth, 0, mPaint); + + @Override protected synchronized void onDraw(Canvas canvas) { + canvas.save(); + canvas.translate(getPaddingLeft(), getHeight() / 2); + boolean noNeedBg = false; + float radio = getProgress() * 1.0f / getMax(); + float progressPosX = (int) (mRealWidth * radio); + String text = getProgress() + "%"; + // mPaint.getTextBounds(text, 0, text.length(), mTextBound); + float textWidth = mPaint.measureText(text); + float textHeight = (mPaint.descent() + mPaint.ascent()) / 2; + if (progressPosX + textWidth > mRealWidth) { + progressPosX = mRealWidth - textWidth; + noNeedBg = true; + } + // draw reached bar + float endX = progressPosX - mTextOffset / 2; + if (endX > 0) { + mPaint.setColor(mReachedBarColor); + mPaint.setStrokeWidth(mReachedProgressBarHeight); + canvas.drawLine(0, 0, endX, 0, mPaint); + } + // draw progress bar + // measure text bound + if (mIfDrawText) { + mPaint.setColor(mTextColor); + canvas.drawText(text, progressPosX, -textHeight, mPaint); + } + // draw unreached bar + if (!noNeedBg) { + float start = progressPosX + mTextOffset / 2 + textWidth; + mPaint.setColor(mUnReachedBarColor); + mPaint.setStrokeWidth(mUnReachedProgressBarHeight); + canvas.drawLine(start, 0, mRealWidth, 0, mPaint); + } + canvas.restore(); } - canvas.restore(); - } - /** - * dp 2 px - */ - protected int dp2px(int dpVal) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, - getResources().getDisplayMetrics()); - } + /** + * dp 2 px + */ + protected int dp2px(int dpVal) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpVal, getResources().getDisplayMetrics()); + } - /** - * sp 2 px - */ - protected int sp2px(int spVal) { - return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal, - getResources().getDisplayMetrics()); - } + /** + * sp 2 px + */ + protected int sp2px(int spVal) { + return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spVal, getResources().getDisplayMetrics()); + } } \ No newline at end of file diff --git a/cache/build/mPro.properties b/cache/build/mPro.properties new file mode 100644 index 00000000..e69de29b