美文网首页
Android 进度控件

Android 进度控件

作者: ITRenj | 来源:发表于2019-11-30 23:42 被阅读0次

    Android 进度控件

    Android 圆形、半圆形进度效果、半圆SeekBar、刻度尺效果实现
    代码下载:GitHub地址

    效果图

    progress.gif
    touch.gif

    控件的使用

    • 布局中设置属性

        <!--  CircleProgressView(圆形进度条) -->
        <com.renj.progress.CircleProgressView
            android:id="@+id/circle_pv_view"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_marginTop="10dp"
            app:circle_pv_current="20"
            app:circle_pv_show_type="decimal"
            app:circle_pv_start_point="top_left"
            app:circle_pv_total="100" />
      
        <!--  SemicircleProgressView(半圆形进度条) -->
        <com.renj.progress.SemicircleProgressView
            android:id="@+id/semicircle_pv_view"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_marginTop="40dp"
            app:semicircle_pv_current="50"
            app:semicircle_pv_total="100" />
      
        <!-- ScaleView(刻度尺效果) -->
        <com.renj.progress.ScaleView
            android:id="@+id/scale_view"
            android:layout_width="match_parent"
            android:layout_height="80dp"
            android:visibility="visible"
            app:scale_current_color="@color/colorAccent"
            app:scale_default_value="160"
            app:scale_end_value="250"
            app:scale_start_value="60"
            app:scale_step_length_value="10"
            app:scale_unit="cm" />
      
        <!--  SemicircleSeekBar(半圆拖动控件) -->
        <com.renj.progress.SemicircleSeekBar
            android:id="@+id/semicircle_sb_view"
            android:layout_width="wrap_content"
            android:layout_height="200dp"
            android:layout_marginTop="40dp"
            app:semicircle_sb_color="@color/colorPrimary"
            app:semicircle_sb_current="50"
            app:semicircle_sb_thumb_bitmap="@mipmap/ic_launcher"
            app:semicircle_sb_thumb_color="@color/colorAccent"
            app:semicircle_sb_thumb_size="12dp"
            app:semicircle_sb_total="100"
            app:semicircle_sb_width="5dp" />
      
    • 代码中设置值

        // CircleProgressView(圆形进度条)
        circleProgressView.setValue(100, 60).takeEffect();
      
        // SemicircleProgressView(半圆形进度条)
        semicircleProgressView.setValue(100, 70).takeEffect();
      
        // ScaleView(刻度尺效果)
        scaleView.setValue(10, 180, 10, 45, "kg").takeEffect();
      
        // SemicircleSeekBar(半圆拖动控件)
        semicircleSeekBar.setValue(100, 60).takeEffect();
      
    • 设置数据改变监听

        // CircleProgressView(圆形进度条)
        circleProgressView.setOnProgressChangeListener((circleProgressView, currentValue) ->
                Log.i("ProgressActivity", "currentValue = [" + currentValue + "]"));
        
        // SemicircleProgressView(半圆形进度条)
        semicircleProgressView.setOnProgressChangeListener((semicircleProgressView, currentValue) ->
                Log.i("ProgressActivity", "currentValue = [" + currentValue + "]"));
        
        // ScaleView(刻度尺效果)
        scaleView.setOnScaleChangeListener((scaleView, currentValue, unit, startValue, endValue, stepLengthValue) ->
                Log.i("TouchActivity", "currentValue = [" + currentValue + "]," +
                        " unit = [" + unit + "], " + "startValue = [" + startValue + "], " +
                        "endValue = [" + endValue + "], " + "stepLengthValue = [" + stepLengthValue + "]"));
        
        // SemicircleSeekBar(半圆拖动控件)
        semicircleSeekBar.setOnProgressChangeListener((semicircleProgressView, currentValue) ->
                Log.i("TouchActivity", "currentValue = [" + currentValue + "]"));
      

    各个控件属性

    • CircleProgressView(圆形进度条) 控件属性

         <declare-styleable name="CircleProgressView">
            <!--背景圆圈颜色-->
            <attr name="circle_pv_bg_color" format="color" />
            <!--进度颜色-->
            <attr name="circle_pv_color" format="color" />
            <!--进度条宽度-->
            <attr name="circle_pv_width" format="dimension" />
            <!--文字颜色-->
            <attr name="circle_pv_text_color" format="color" />
            <!--文字大小-->
            <attr name="circle_pv_text_size" format="dimension" />
            <!--当前结果显示样式-->
            <attr name="circle_pv_show_type" format="enum">
                <!--不显示当前值-->
                <enum name="none" value="0" />
                <!--小数点形式显示-->
                <enum name="decimal" value="1" />
                <!--百分比形式显示,默认-->
                <enum name="percentage" value="2" />
            </attr>
            <!--进度开始位置控制-->
            <attr name="circle_pv_start_point" format="enum">
                <!--上方-->
                <enum name="top" value="0" />
                <!--右上方-->
                <enum name="top_right" value="1" />
                <!--右方-->
                <enum name="right" value="2" />
                <!--右下方-->
                <enum name="bottom_right" value="3" />
                <!--下方-->
                <enum name="bottom" value="4" />
                <!--左下方-->
                <enum name="bottom_left" value="5" />
                <!--左方-->
                <enum name="left" value="6" />
                <!--左上方-->
                <enum name="top_left" value="7" />
            </attr>
    
            <!--进度总大小-->
            <attr name="circle_pv_total" format="integer" />
            <!--当前进度-->
            <attr name="circle_pv_current" format="integer" />
        </declare-styleable>
    
    • SemicircleProgressView(半圆形进度条) 控件属性

        <declare-styleable name="SemicircleProgressView">
            <!--背景圆圈颜色-->
            <attr name="semicircle_pv_bg_color" format="color" />
            <!--进度颜色-->
            <attr name="semicircle_pv_color" format="color" />
            <!--进度条宽度-->
            <attr name="semicircle_pv_width" format="dimension" />
            <!--文字颜色-->
            <attr name="semicircle_pv_text_color" format="color" />
            <!--文字大小-->
            <attr name="semicircle_pv_text_size" format="dimension" />
            <!--当前进度文字颜色-->
            <attr name="semicircle_pv_current_text_color" format="color" />
            <!--当前进度文字颜色-->
            <attr name="semicircle_pv_current_text_size" format="dimension" />
            <!--当前结果显示样式-->
            <attr name="semicircle_pv_show_type" format="enum">
                <!--不显示当前值-->
                <enum name="none" value="0" />
                <!--小数点形式显示-->
                <enum name="decimal" value="1" />
                <!--百分比形式显示,默认-->
                <enum name="percentage" value="2" />
            </attr>
      
            <!--进度总大小-->
            <attr name="semicircle_pv_total" format="integer" />
            <!--当前进度-->
            <attr name="semicircle_pv_current" format="integer" />
      
        </declare-styleable>
      
    • ScaleView(刻度尺效果) 控件属性

        <declare-styleable name="ScaleView">
            <!--线颜色-->
            <attr name="scale_line_color" format="color" />
            <!--主线宽度-->
            <attr name="scale_main_line_width" format="dimension" />
            <!--默认当前位置刻度线宽度-->
            <attr name="scale_current_line_width" format="dimension" />
            <!--刻度线宽度-->
            <attr name="scale_line_width" format="dimension" />
            <!--长刻度线高度-->
            <attr name="scale_line_height_long" format="dimension" />
            <!--短刻度线高度-->
            <attr name="scale_line_height_short" format="dimension" />
            <!--每一个刻度单元格宽度(两个长刻度之间的宽度)-->
            <attr name="scale_cell_width" format="dimension" />
            <!--文字和刻度线之间的距离-->
            <attr name="scale_text_space" format="dimension" />
            <!--刻度文字颜色-->
            <attr name="scale_text_color" format="color" />
            <!--刻度文字大小-->
            <attr name="scale_text_size" format="dimension" />
            <!--是否显示/绘制当前值信息-->
            <attr name="scale_is_show_current_info" format="boolean" />
            <!--显示当前刻度文字大小-->
            <attr name="scale_current_text_size" format="dimension" />
            <!--当前刻度和文字颜色-->
            <attr name="scale_current_color" format="color" />
      
            <!--单位/显示当前值时的单位-->
            <attr name="scale_unit" format="string" />
            <!--开始值-->
            <attr name="scale_start_value" format="integer" />
            <!--结束值-->
            <attr name="scale_end_value" format="integer" />
            <!--步长(每两个刻度之间的差值),注意:步长(stepLengthValue)必须为大于0的整数.-->
            <attr name="scale_step_length_value" format="integer" />
            <!--默认值,注意:范围应该在 startValue 和 endValue 之间-->
            <attr name="scale_default_value" format="integer" />
        </declare-styleable>
      
    • SemicircleSeekBar(半圆拖动控件) 控件属性

        <declare-styleable name="SemicircleSeekBar">
            <!--背景圆圈颜色-->
            <attr name="semicircle_sb_bg_color" format="color" />
            <!--进度颜色-->
            <attr name="semicircle_sb_color" format="color" />
            <!--进度条宽度-->
            <attr name="semicircle_sb_width" format="dimension" />
            <!--滑动图标半径-->
            <attr name="semicircle_sb_thumb_radius" format="dimension" />
            <!--滑动图标颜色-->
            <attr name="semicircle_sb_thumb_color" format="color" />
            <!--滑动图标-->
            <attr name="semicircle_sb_thumb_bitmap" format="reference" />
            <!--滑动图标大小-->
            <attr name="semicircle_sb_thumb_size" format="dimension" />
            <!--环形四周间距,有文字时修改文字与环形的对齐方式-->
            <attr name="semicircle_sb_innerMargin" format="dimension" />
            <!--最大值/最小值文字与环形的距离值-->
            <attr name="semicircle_sb_textPadding" format="dimension" />
            <!--文字颜色-->
            <attr name="semicircle_sb_text_color" format="color" />
            <!--文字大小-->
            <attr name="semicircle_sb_text_size" format="dimension" />
            <!--当前进度文字颜色-->
            <attr name="semicircle_sb_current_text_color" format="color" />
            <!--当前进度文字颜色-->
            <attr name="semicircle_sb_current_text_size" format="dimension" />
            <!--当前结果显示样式-->
            <attr name="semicircle_sb_show_type" format="enum">
                <!--不显示当前值-->
                <enum name="none" value="0" />
                <!--小数点形式显示-->
                <enum name="decimal" value="1" />
                <!--百分比形式显示,默认-->
                <enum name="percentage" value="2" />
            </attr>
      
            <!--进度总大小-->
            <attr name="semicircle_sb_total" format="integer" />
            <!--当前进度-->
            <attr name="semicircle_sb_current" format="integer" />
      
        </declare-styleable>
      

    相关文章

      网友评论

          本文标题:Android 进度控件

          本文链接:https://www.haomeiwen.com/subject/ytwawctx.html