一个依赖就可以实现复杂的圆形进度条

圆形进度条

第一步:
compile 'com.czp.arcProgressBar:ArcProgressBar:1.0.1'

第二步:
		
<com.czp.library.ArcProgress
    android:id="@+id/myProgress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:degree="0"
    app:progressStyle="arc" />

第三步:

public class MainActivity extends AppCompatActivity {

    ArcProgress mProgress;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        mProgress = (ArcProgress) findViewById(R.id.myProgress);
        //默认实现的类
        //new OnTextcenter 初始化 文字颜色和文字大小
        mProgress.setOnCenterDraw(new OnTextCenter(Color.BLUE, 30));
        addProrgress(mProgress);
    }

    //开启线程的方法
    public void addProrgress(ArcProgress progressBar) {
        Thread thread = new Thread(new ProgressThread(progressBar));
        thread.start();
    }

    //更新UI
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            ArcProgress progressBar = (ArcProgress) msg.obj;
            progressBar.setProgress(msg.what);
        }
    };

    //子线程
    class ProgressThread implements Runnable {
        int i = 0;
        private ArcProgress progressBar;

        public ProgressThread(ArcProgress progressBar) {
            this.progressBar = progressBar;
        }

        @Override
        public void run() {
            for (; i <= 100; i++) {
                //判断结束
                if (isFinishing()) {
                    break;
                }
                //实例化消息对象
                Message msg = new Message();
                msg.what = i;
//                Log.e("DEMO","i == "+i);
                //发送进度条的进度
                msg.obj = progressBar;
                //系统时钟 睡 100 毫秒
                SystemClock.sleep(100);
                handler.sendMessage(msg);
            }
        }
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在WPF中,要重写一个圆形进度条,我们可以通过自定义一个继承自Button的新控件来实现。 首先,我们需要定义一个新的类,比如名为CircularProgressBar的控件。在这个类中,我们可以重写Button的外观和交互逻辑来实现圆形进度条的效果。 在重写的过程中,我们可以使用XAML来定义控件的外观。可以通过一个Border包裹一个Canvas元素来创建一个圆形进度条的底部背景。然后在这个Canvas中添加一个圆形Shape,比如Ellipse或者Path,来表示进度条的当前进度。 在类内部,我们可以定义一个依赖属性来控制进度条的当前进度。这个属性可以使用一个Double类型的值来表示进度的百分比。 为了实现进度条从0%到100%的动画效果,我们可以使用WPF的动画功能。可以使用DoubleAnimation来定义一个从0到100的动画,然后将这个动画应用到进度条的当前进度属性上。 最后,我们需要在类中定义一些方法来更新进度条的状态。比如,可以定义一个名为SetProgress的方法来设置进度条的当前进度。在这个方法中,我们可以将传入的进度值应用到进度条的当前进度属性上,然后触发动画效果。 综上所述,通过自定义一个继承自Button的新控件,我们可以重写WPF的圆形进度条。在重写过程中,我们可以定义一个新的类来控制进度条的外观和交互逻辑,使用XAML定义控件的外观,使用依赖属性来控制进度条的当前进度,并使用动画来实现进度条从0%到100%的动画效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值