在res下创建drawable文件夹,新建文件drawable/progressbar_color.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="wrap_content">    <!-- 背景  gradient是渐变,corners定义的是圆角 -->    <item android:id="@android:id/background"        android:layout_width="wrap_content">        <shape>            <corners android:radius="10dp" />            <solid android:color="#ffffff" />        </shape>    </item>    <!-- 第二条进度条颜色 -->    <item android:id="@android:id/secondaryProgress">        <clip>            <shape>                <corners android:radius="10dp" />                <gradient                    android:angle="90.0"                    android:centerColor="#aadfdf"                    android:centerY="0.45"                    android:endColor="#aadfdf"                    android:startColor="#aadfdf" />            </shape>        </clip>    </item>    <!-- 进度条 -->    <item android:id="@android:id/progress">        <clip>            <shape>                <corners android:radius="10dp" />                <solid android:color="#00a8a7" />            </shape>        </clip>    </item></layer-list>

progressBarstyle

style="?android:attr/progressBarStyleHorizontal"

<ProgressBar         android:id="@+id/my_progress"        android:layout_width="match_parent"        android:layout_height="12dp"        android:max="100"        android:progress="40"        android:secondaryProgress="70"        style="?android:attr/progressBarStyleHorizontal"        android:progressDrawable="@drawable/progressbar_color"/>

dialog自定义样式XML

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="200dp"        android:orientation="vertical"        android:background="@drawable/bar">        <TextView            android:id="@+id/progress_message"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textSize="44px"            android:text="download"            android:layout_marginTop="113px"            android:layout_gravity="center"            android:textColor="#282828"            />        <ProgressBar            android:id="@+id/progress"            style="?android:attr/progressBarStyleHorizontal"            android:layout_width="300dp"            android:layout_height="18dp"            android:layout_marginTop="10dp"            android:layout_marginLeft="15dp"            android:layout_centerHorizontal="true"            android:progressDrawable="@drawable/bar"            android:secondaryProgress="100"        />        <LinearLayout            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:orientation="horizontal"            >            <TextView                android:id="@+id/progress_percent"                android:layout_width="80dp"                android:layout_height="wrap_content"                android:textSize="30px"                android:layout_marginTop="5dp"                android:layout_marginLeft="15dp"                android:textColor="#282828"                />            <TextView                android:id="@+id/progress_number"                android:layout_width="250px"                android:layout_height="wrap_content"                android:layout_marginTop="5dp"                android:layout_marginLeft="100dp"                android:textSize="30px"                android:gravity="center_horizontal"                android:textColor="#282828"                />        </LinearLayout>    </LinearLayout></LinearLayout>

CommonProgressDialog.java类:

package buzz.things.prigressdialog;import android.app.AlertDialog;import android.content.Context;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.text.Spannable;import android.text.SpannableString;import android.text.style.StyleSpan;import android.widget.ProgressBar;import android.widget.TextView;import java.text.NumberFormat;/** * Created by buzz on 2015/6/12. */public class CommonProgressDialog extends AlertDialog {    private ProgressBar mProgress;    private TextView mProgressNumber;    private TextView mProgressPercent;    private TextView mProgressMessage;    private Handler mViewUpdateHandler;    private int mMax;    private CharSequence mMessage;    private boolean mHasStarted;    private int mProgressVal;    private String TAG="CommonProgressDialog";    private String mProgressNumberFormat;    private NumberFormat mProgressPercentFormat;    public CommonProgressDialog(Context context) {        super(context);        // TODO Auto-generated constructor stub        initFormats();    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.progress_bar_sweet);        mProgress=(ProgressBar) findViewById(R.id.progress);        mProgressNumber=(TextView) findViewById(R.id.progress_number);        mProgressPercent=(TextView) findViewById(R.id.progress_percent);        mProgressMessage=(TextView) findViewById(R.id.progress_message);//      LayoutInflater inflater = LayoutInflater.from(getContext());        mViewUpdateHandler = new Handler() {            @Override            public void handleMessage(Message msg) {                // TODO Auto-generated method stub                super.handleMessage(msg);                int progress = mProgress.getProgress();                int max = mProgress.getMax();                double dProgress = (double)progress/(double)(1024 * 1024);                double dMax = (double)max/(double)(1024 * 1024);                if (mProgressNumberFormat != null) {                    String format = mProgressNumberFormat;                    mProgressNumber.setText(String.format(format, dProgress, dMax));                } else {                    mProgressNumber.setText("");                }                if (mProgressPercentFormat != null) {                    double percent = (double) progress / (double) max;                    SpannableString tmp = new SpannableString(mProgressPercentFormat.format(percent));                    tmp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD),                            0, tmp.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);                    mProgressPercent.setText(tmp);                } else {                    mProgressPercent.setText("");                }            }        };//      View view = inflater.inflate(R.layout.common_progress_dialog, null);//        mProgress = (ProgressBar) view.findViewById(R.id.progress);//        mProgressNumber = (TextView) view.findViewById(R.id.progress_number);//        mProgressPercent = (TextView) view.findViewById(R.id.progress_percent);//        setView(view);        //mProgress.setMax(100);        onProgressChanged();        if (mMessage != null) {            setMessage(mMessage);        }        if (mMax > 0) {            setMax(mMax);        }        if (mProgressVal > 0) {            setProgress(mProgressVal);        }    }    private void initFormats() {        mProgressNumberFormat = "%1.2fM/%2.2fM";        mProgressPercentFormat = NumberFormat.getPercentInstance();        mProgressPercentFormat.setMaximumFractionDigits(0);    }    private void onProgressChanged() {        mViewUpdateHandler.sendEmptyMessage(0);    }    public void setProgressStyle(int style) {        //mProgressStyle = style;    }    public int getMax() {        if (mProgress != null) {            return mProgress.getMax();        }        return mMax;    }    public void setMax(int max) {        if (mProgress != null) {            mProgress.setMax(max);            onProgressChanged();        } else {            mMax = max;        }    }    public void setIndeterminate(boolean indeterminate) {        if (mProgress != null) {            mProgress.setIndeterminate(indeterminate);        }//      else {//            mIndeterminate = indeterminate;//        }    }    public void setProgress(int value) {        if (mHasStarted) {            mProgress.setProgress(value);            onProgressChanged();        } else {            mProgressVal = value;        }    }    @Override    public void setMessage(CharSequence message) {        // TODO Auto-generated method stub        //super.setMessage(message);        if(mProgressMessage!=null){            mProgressMessage.setText(message);        }        else{            mMessage = message;        }    }    @Override    protected void onStart() {        // TODO Auto-generated method stub        super.onStart();        mHasStarted = true;    }    @Override    protected void onStop() {        // TODO Auto-generated method stub        super.onStop();        mHasStarted = false;    }}

测试程序:

private void showDialog(){      mDialog = new CommonProgressDialog(this);            mDialog.setMessage("正在下载");      mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);      mDialog.setOnCancelListener(new OnCancelListener() {                    @Override          public void onCancel(DialogInterface dialog) {              // TODO Auto-generated method stub              //cancel(true);          }      });      mDialog.show();            mDialog.setMax(100*1024*1024);      mDialog.setProgress(65*1024*1024);  }  

效果图

android 自定义progressbar 样式_第1张图片

ref:http://blog.csdn.net/heqiangflytosky/article/details/21176943?utm_source=tuicool

ref:http://blog.csdn.net/qjlhlh/article/details/7979179

更多相关文章

  1. 2011.09.01(5)——— android checkbox自定义样式
  2. Android Studio -- 设置字体样式
  3. Android 中可重写的一些样式
  4. Android样式的开发:drawable汇总篇
  5. Android中的自定义主题和样式
  6. Android系统自带样式(android:theme)(stephen830的博客)
  7. 设置 listview 滚动条样式
  8. android switch 控件自定义样式不显示??

随机推荐

  1. 实例:在Android调用WCF服务(wcf restful)
  2. Android开发资源完全汇总
  3. android 学习RxJava+Retrofit的资料
  4. Android EditText光标颜色 与inputType
  5. android 分辨率调试
  6. Android修行之路——Android程序设计基础
  7. 在 ubuntu10.04下 载 android源码 步骤
  8. android默认属性
  9. android设置按钮背景透明度与设置布局背
  10. android:launchMode="singleTask" 与 onN