当前位置: 首页 > news >正文

circularprogressbar/smoothprogressbar开源视图使用学习

github地址:https://github.com/castorflex/SmoothProgressBar

多彩圆形进度条和多彩水平进度条

colors.xml

定义变化的颜色内容,用gplus_colors来进行标示

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <color name="gplus_color_1">#3e802f</color>
    <color name="gplus_color_2">#f4b400</color>
    <color name="gplus_color_3">#427fed</color>
    <color name="gplus_color_4">#b23424</color>

    <integer-array name="gplus_colors">
        <item>@color/gplus_color_1</item>
        <item>@color/gplus_color_2</item>
        <item>@color/gplus_color_3</item>
        <item>@color/gplus_color_4</item>
    </integer-array>

</resources>

activity_main.xml

start_btn-->进度条运行
end_btn-->进度条停止

android:indeterminate="true"-->默认为true,否则控件不显示

app:cpb_color="#FFee44"-->圆形进度条默认颜色
app:cpb_colors="@array/gplus_colors"-->定义圆形进度条的颜色数组
app:cpb_max_sweep_angle="300"-->最大弧度大小,不能超过360,不能小于0,否则报错
app:cpb_min_sweep_angle="10"-->最小弧度
 app:cpb_rotation_speed="1.0"-->转圈的速度,值越大,速度越快,值越小,越慢

app:cpb_sweep_speed="2.0"-->也是控制速度的,暂时未知
app:spb_colors="@array/gplus_colors"-->定义水平进度条颜色数组
 app:spb_mirror_mode="true"-->水平进度条由两侧向中心方向移动
app:spb_mirror_mode="false"-->水平进度条由左侧向右边移动
 app:spb_sections_count="4"-->线性进度条上显示4个色条
 app:spb_stroke_separator_length="4dp"->色块间隔
 app:spb_mirror_mode="true"-->true 两侧向中间靠拢,false 由左向右。
app:spb_stroke_width="4dp"-->色块上下厚度
app:spb_reversed="false"-->false 左向右,true 右向左。

  app:spb_progressiveStart_speed="5" -->色块移动开始速度

 app:spb_progressiveStop_speed="1"-->色块移动停止速度 

activty_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >

    <Button
        android:id="@+id/start_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <Button
        android:id="@+id/end_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <fr.castorflex.android.circularprogressbar.CircularProgressBar
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/circularProgressBar"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:indeterminate="true"
        app:cpb_color="#FFee44"
        app:cpb_colors="@array/gplus_colors"
        app:cpb_max_sweep_angle="300"
        app:cpb_min_sweep_angle="10"
        app:cpb_rotation_speed="1.0"
        app:cpb_stroke_width="4dp"
        app:cpb_sweep_speed="1.0" />

    <!-- app:spb_color="#FF0000" -->

    <fr.castorflex.android.smoothprogressbar.SmoothProgressBar
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/smoothProgressBar"
        style="@style/SmoothProgressBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:indeterminate="true"
        app:spb_colors="@array/gplus_colors"
        app:spb_mirror_mode="true"
        app:spb_progressiveStart_activated="true"
        app:spb_progressiveStart_speed="1.5"
        app:spb_progressiveStop_speed="3.4"
        app:spb_reversed="false"
        app:spb_sections_count="4"
        app:spb_speed="2.0"
        app:spb_stroke_separator_length="4dp"
        app:spb_stroke_width="4dp" />

</LinearLayout>

MainActivity.java

package com.example.smoothprogressbar;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import fr.castorflex.android.circularprogressbar.CircularProgressDrawable;

public class MainActivity extends Activity {
    private Button start_btn;
    private Button end_btn;
    //圆形进度条
    private fr.castorflex.android.circularprogressbar.CircularProgressBar circularProgressBar;
    //水平进度条
    private fr.castorflex.android.smoothprogressbar.SmoothProgressBar smoothProgressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        start_btn = (Button) findViewById(R.id.start_btn);
        end_btn = (Button) findViewById(R.id.end_btn);

        circularProgressBar = (fr.castorflex.android.circularprogressbar.CircularProgressBar) findViewById(R.id.circularProgressBar);
        smoothProgressBar = (fr.castorflex.android.smoothprogressbar.SmoothProgressBar) findViewById(R.id.smoothProgressBar);

        start_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //圆形进度条转动
                CircularProgressDrawable drawable = (CircularProgressDrawable) circularProgressBar
                        .getIndeterminateDrawable();
                drawable.start();
                //水平进度条启动
                smoothProgressBar.progressiveStart();
            }
        });
        end_btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                //圆形进度条停止转动
                CircularProgressDrawable drawable = (CircularProgressDrawable) circularProgressBar
                        .getIndeterminateDrawable();
                drawable.progressiveStop();
                //水平进度条停止启动
                smoothProgressBar.progressiveStop();

            }
        });
    }

}

我程序github地址:

 

相关文章:

  • C/C++和JAVA 实现大数相加
  • 苹果推出开源医学研究框架ResearchKit
  • 康拓展开及其逆运算和全排列函数
  • 用R分析时间序列(time series)数据
  • QDUoj GZS的三角形 棋盘里的数学 (数学规律题)
  • N-tier architecture N层架构 (转)
  • 树状数组区间更新+区间查询+单点查询
  • PHPCMS如何实现后台访问限制?
  • 树的直径 —— 即一棵树的最长路 附题(大臣的旅费 by蓝桥杯)
  • 一个关于按位或的故事~~(QDU-码农必修)
  • ConcurrentHashMap 解读(一)
  • Today一只菜鸡的PAT甲级测试(PAT1124, PAT1125, PAT1126, PAT1127)
  • 快速排序--自行实现+qsort+sort
  • 归并排序--二路归并
  • quartz定时任务时间设置描
  • 78. Subsets
  • Consul Config 使用Git做版本控制的实现
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • github从入门到放弃(1)
  • HTTP那些事
  • interface和setter,getter
  • java2019面试题北京
  • Javascript编码规范
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • vue-router的history模式发布配置
  • 阿里云应用高可用服务公测发布
  • 那些被忽略的 JavaScript 数组方法细节
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 通信类
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 一个SAP顾问在美国的这些年
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 译自由幺半群
  • 再谈express与koa的对比
  • 栈实现走出迷宫(C++)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • Linux权限管理(week1_day5)--技术流ken
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​低代码平台的核心价值与优势
  • !$boo在php中什么意思,php前戏
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • # 数据结构
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (算法)N皇后问题
  • (算法)前K大的和
  • (转)http-server应用
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .Net CF下精确的计时器
  • .NET Core中Emit的使用
  • .net framework profiles /.net framework 配置