先上图,有图有真相:
其实也很简单,也是用了一下投机取巧的方法,大家有更多的方法的话,可以和我交流一下。
xml布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center" >
<com.freesonfish.progress_bar.MyProgressBar4
android:id="@+id/my_progress_bar_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
</LinearLayout>
自定义的View如下:package com.freesonfish.progress_bar;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Shader;
import android.graphics.SweepGradient;
import android.util.AttributeSet;
import android.view.View;
public class MyProgressBar4 extends View {
private Paint mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private Shader mShader;
private float x = 50.0f, y = 50.0f;
private float swap = 0.02f;
private Matrix mMatrix = new Matrix();
private Paint tPaint = new Paint();
private String value = "";
private Rect rect = new Rect();
public MyProgressBar4(Context context, AttributeSet attr) {
super(context, attr);
initPaint();
}
public MyProgressBar4(Context context) {
super(context);
initPaint();
}
private void initPaint() {
mShader = new SweepGradient(x, y, new int[] { 0xFFFF0000, 0xCCCCCCCC }, new float[] { 1.0f, swap });
mMatrix.setRotate(-90, x, y);
mShader.setLocalMatrix(mMatrix);
mPaint.setShader(mShader);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeWidth(7);
mPaint.setAntiAlias(true);
tPaint.setColor(Color.GREEN);
tPaint.setTextSize(16);
}
private void resetShader() {
mShader = new SweepGradient(x, y, new int[] { 0xFFFF0000, 0xCCCCCCCC }, new float[] { 1.0f, swap });
mShader.setLocalMatrix(mMatrix);
mPaint.setShader(mShader);
}
@Override
protected void onDraw(Canvas canvas) {
Paint paint = mPaint;
canvas.drawText(value, x - rect.centerX(), y - rect.centerY(), tPaint);
canvas.drawCircle(x, y, 30, paint);
}
public void changeProgressValue() {
swap += 0.08f;
int swapValue = (int)(swap * 100f);
value = (swapValue > 100 ? 100 : swapValue) + "%";
tPaint.getTextBounds(value, 0, value.length(), rect);
resetShader();
invalidate();
}
public float getSwapValue() {
return swap;
}
}
测试Activity类如下:package com.freesonfish.progress_bar;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import com.freesonfish.R;
public class MyprogressBarActivity4 extends Activity {
MyProgressBar4 progressBar = null;
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
if (progressBar.getSwapValue() <= 1.0f) {
progressBar.changeProgressValue();
handler.sendEmptyMessageDelayed(0, 500);
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_progress_bar_4);
progressBar = (MyProgressBar4) findViewById(R.id.my_progress_bar_4);
handler.sendEmptyMessageDelayed(0, 500);
}
}
转自:http://blog.csdn.net/freesonhp/article/details/9033635
分享到:
相关推荐
进度条样式在项目中经常可以见到,下面小编给大家分享Android三种方式实现ProgressBar自定义圆形进度条。 Android进度条有4种风格可以使用。 默认值是progressBarStyle。 设置成progressBarStyleSmall后,图标变小...
android自定义ProgressBar(仿淘宝)的加载效果
Android 自定义各式各样的圆形ProgressBar https://blog.csdn.net/qq_31939617/article/details/80742716
通过layer-list实现的自定义颜色的 ProgressBar,效果还不错!
实现了自定义progressbar,修改style 然后引用该style
android 自定义ProgressBar 字体适配 实现了 进度文字跟随进度效果
课堂资源代码(Android-ProgressBar 自定义菊花加载效果)
android progressbar背景
在前辈的基础上修改,进度条一半是半圆,另一半是矩形,在进度时间判断上比较繁琐,但是会给大家提供一个思路.
自定义progressBar 自定义样式,遇到的问题。 1. 正常的情况 2. 在程序中设置 progressDrawable 遇到的情况,以及怎么解决。 参考文章 http://blog.csdn.net/chengxiaobo0306/article/details/18960005
android自定义progressBar颜色,四个角圆度
ics4.0 ProgressBar加载转圈的样式感觉非常棒 但是4.0以下版本无法使用,所以就自定义了一套通用的样式 附件是source code + apk
使用android逐帧动画实现自定义loading进度条。
Android自定义Progressbar, 任何图片都能够像Porgressbar一样转动
android 实现progressbar的简单自定义动画
通过一个小例子实现Android之自定义ProgressBar。博客地址:http://blog.csdn.net/bingdianlanxin,有问题欢迎留言!
android中设置水平进度条和seekbar的样式,自行写一个XML文件,
集成了多种风给的Android 自定义progressbar控件
android自定义半圆进度条,可以自己根据里面备注的参数,调整半圆的长度。这里是使用说明:http://blog.csdn.net/beibaokongming/article/details/79002646