zoukankan      html  css  js  c++  java
  • HMS13. Switch RadioButton CheckBox ProgressBar RoundProgressBar

    01. Switch

      共有XML属性继承自:Text, 私有属性如下:

      text_state_on, text_state_off: 开启和关闭时显示的文本;

      track_element: 轨迹样式;Element类型,可直接配置色值;也可引用color资源或Media/Graphic下的图片资源;

      thumb_element: thumb样式;Element类型;

      marked:当前状态; boolean类型;

      check_element: 状态标志样式;Element类型;

       >>> 关于 track_element 和 thumb_element的理解; 这二面内容都有二种样式,即选中/未选中状态的样式;

        

        在Java中,通过代码配置布局如下

     1 //开启状态下滑块的样式
     2 ShapeElement elementThumbOn = new ShapeElement();
     3 elementThumbOn.setShape(ShapeElement.OVAL);
     4 elementThumbOn.setRgbColor(RgbColor.fromArgbInt(0xFF1E90FF));
     5 elementThumbOn.setCornerRadius(50);
     6 // 关闭状态下滑块的样式
     7 ShapeElement elementThumbOff = new ShapeElement();
     8 elementThumbOff.setShape(ShapeElement.OVAL);
     9 elementThumbOff.setRgbColor(RgbColor.fromArgbInt(0xFFFFFFFF));
    10 elementThumbOff.setCornerRadius(50);
    11 // 开启状态下轨迹样式
    12 ShapeElement elementTrackOn = new ShapeElement();
    13 elementTrackOn.setShape(ShapeElement.RECTANGLE);
    14 elementTrackOn.setRgbColor(RgbColor.fromArgbInt(0xFF87CEFA));
    15 elementTrackOn.setCornerRadius(50);
    16 // 关闭状态下轨迹样式
    17 ShapeElement elementTrackOff = new ShapeElement();
    18 elementTrackOff.setShape(ShapeElement.RECTANGLE);
    19 elementTrackOff.setRgbColor(RgbColor.fromArgbInt(0xFF808080));
    20 elementTrackOff.setCornerRadius(50);

         布局处理好以后,配置thumb_element, track_element的样式配置函数;   
        这个样式是直接容纳了其它已经配置好的样式,但与状态关联

     1 private StateElement trackElementInit(ShapeElement on, ShapeElement off){
     2     StateElement trackElement = new StateElement();
     3     trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);
     4     trackElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);
     5     return trackElement;
     6 }
     7 private StateElement thumbElementInit(ShapeElement on, ShapeElement off) {
     8     StateElement thumbElement = new StateElement();
     9     thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, on);
    10     thumbElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, off);
    11     return thumbElement;
    12 }

        为Switch配置不同样式;

    1 Switch btnSwitch = (Switch) findComponentById(ResourceTable.Id_btn_switch);
    2 btnSwitch.setTrackElement(trackElementInit(elementTrackOn, elementTrackOff));
    3 btnSwitch.setThumbElement(thumbElementInit(elementThumbOn, elementThumbOff));

    02. RadioButton

      RadioButton 共有XML属性继承自 Text; 自有的XML属性如下:

      marked: 当前状态(选中与否); Boolean类型;

      text_color_on, text_color_off: 处于选中/未选中状态下的文本颜色;

      check_element: 状态标志样式;Element类型; 可以直接配置色值,也可配置color下的资源或引用 graphic/media下的图片资源;

      >>> RadioButton 可独立配置自身的样式
        默认情况下为小圆圈标识,可通过 check_element 来指定样样式 (State-container)

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <state-container
     3     xmlns:ohos="http://schemas.huawei.com/res/ohos">
     4     <item
     5         ohos:element="$graphic:background_checkbox_checked"
     6         ohos:state="component_state_checked"/>
     7     <item
     8         ohos:element="$graphic:background_checkbox_empty"
     9         ohos:state="component_state_empty"/>
    10 </state-container>

        同时需要另外二个不同状态下的配置,来达成最终效果 (选中时状态与非选中时状态)

    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
    3        ohos:shape="rectangle">
    4     <solid
    5         ohos:color="#007DFF"/>
    6     <corners
    7         ohos:radius="4"/>
    8 </shape>
    1 <?xml version="1.0" encoding="UTF-8" ?>
    2 <shape xmlns:ohos="http://schemas.huawei.com/res/ohos"
    3        ohos:shape="rectangle">
    4     <stroke ohos:width="5"
    5             ohos:color="gray"/>
    6     <corners
    7         ohos:radius="4"/>
    8 </shape>

    03. RadioContainer; 是RadiioButton的容器,在其包裹下的RadioButton保证只有一个被选中;

       RadioContainer的共有XML属性继承自: DirectionalLayout ;
       >>> 关联事件

      选择变更事件:setMarkChangedListener;

      指定项选中:   container.mark(0) ;  ///索引从 0 开始;

      清除选中状态: container.cancelMarks();

        取成员数量:   container.getChildCount();

      取特定序位的成员:(RadioButton)container.getComponentAt(i) 
      

     

     04. CheckBox
      CheckBox 与 RadioButton 属性基本一样;

      >>> 属性设置

          设置是否选中: checkbox.setChecked(true); 

        选中状态切换:  checkbox.toggle();

     05. ProgressBar
      公有XML属性继承自 Component, 自有属性如下

      divider_lines_enabled, divider_lines_number : 是否显示分隔线; 以及分成多少份

      infinite, infinite_element:  不确定模式,及不确定模式下的内容;(速度很快速)

      min, max, progress: 最小值,最大值,当前值;

      orientation: 排列方向; 

      background_instruct_element: 背景 Element; 注意与 Background_element的区别; (此处 progress_width="50vp")
      

       progress_ 进度条的宽度;

      

       progress_color: 进度条的颜色;上图绿色部分;

      progress_element: 进度条背景; 若配置上颜色,progress_color基本没了

         

       progress_hint, progress_hit_text_alignment, progress_hint_text-color, progress_hint_text_size:  进度条上文本内容的配置

       vice_progress, vice_progress_element: 副进度条配置

      step: 进度的步长;

      >>> 关于 DividerLineColor的配置:  (XML配置中无属性配置)

        progressbar.setDividerLineColor(Color.MAGENTA);
        

           >>> 关于进度<15%时的不同效果 (此处标识一下,便于后期了解)    

     

    06. RoundProgressBar

       共有属性继承自  ProgressBar; 自有属性如下 :

       start_angle, max_angle: 圆形进度条的起始角度及最大角度;

      

       

         

      

        

  • 相关阅读:
    浏览器渲染流程
    MVC模式
    传统的DOM是如何进行渲染的
    报文的概念及理解
    单页面开发与多页面开发的优缺点
    第4次作业
    售票系统
    第三次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/jieling/p/15484821.html
Copyright © 2011-2022 走看看