zoukankan      html  css  js  c++  java
  • HMS11.Image, TabList与Tab, Picker

    01.Image

      共有XML属性继承自 Component;

      特有属性:

        clip_alignment: 图像裁剪模式; --> left, right, top, bottom, center;

        image_src: 标识图像来源;可以配置色值,color资源和media下的图片资源;

        scal_mode: 图像缩放类型;  zoom-center; zoom_start; zoom_end; stretch; center; inside; clip_center; 

      >>> 透明度属性: alpha; 
        当存在透明度时,对于颜色值的配置,可以带透明度配置,

        

     02. TabList 和 Tab

      TabList 继承自 ScrollView; 

      关联问题:

        a. tab 项之间,如何平分屏幕空间(或者说平分空闲空间);
        b. tab项宽度,能否按Text长度自适应;
        c. tab项内容能否在XML中进行配置;

        设置fixedMode

        默认为false,该模式下TabList的总宽度是各Tab宽度的总和,若固定了TabList的宽度,当超出可视区域,则可以通过滑动TabList来显示。
        如果设置为true,TabList的总宽度将与可视区域相同,各个Tab的宽度也会根据TabList的宽度而平均分配,该模式适用于Tab较少的情况。
        tabList.setFixedMode(true);

      TabList的常用接口

        

     03. Picker

      Picker 提供了滑动选择器,允许用户从预定义的范围中进行选择;

      Picker的共有XML属性,继承自: DirectionalLayout;

      >>> 特有属性说明

        element_padding: 文本与Element之间的间距,Element必须通过 setElementFormatter 接口配置

        max_value, min_value,value: 最大值,最小值和当前值;Integer类型; 

        selected_text_color, selected_text_size: 选中文本的颜色和文本大小;

        selector_item_num: 显示的项目数量 ; 

        selected_normal_text_margin_ration: 选中文本边距与默认文本边距的比例,要求>0.0f, 默认为 1.0f; 

        shadow_color: 着色器颜色;

        top_line_element, bottom_line_element: 选中项的顶行和底线;Element类型,可直接配置色值,也可引用color资源或图片资源 ;

        wheel_mode_enabled: 选择轮是否循环显示数据;

       >>> 关于Picker的使用,只提供了数值的范围值,但可以通过格式化显示或者配置显示内容,来达到值与显示文本内容的对应关系;

         

          当前标识项内容的上下隔离线配置

            

        在代码中配置:

          

        着色器, 选中项间距,首尾值循环:

          

         关于Picker的联动控制
          *** 关于 wheel_mode_enabled:true 模式下的首尾相连效果,当实际内容数量>selector_item_num 时,可以看到首尾相连效果;(默认5个)

          

     >>布局

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <DirectionalLayout
     3     xmlns:ohos="http://schemas.huawei.com/res/ohos"
     4     ohos:height="match_parent"
     5     ohos:width="match_parent"
     6     ohos:alignment="center"
     7     ohos:orientation="vertical">
     8 
     9     <Text
    10         ohos:id="$+id:text_chg"
    11         ohos:height="match_content"
    12         ohos:width="300vp"
    13         ohos:text="show infomations"
    14         ohos:text_size="30vp"
    15         ohos:margin="10vp"
    16         ohos:padding="10vp"
    17         ohos:text_alignment="horizontal_center"
    18         ohos:background_element="$graphic:background_text"
    19         />
    20 
    21     <Picker
    22         ohos:id="$+id:picker_test"
    23         ohos:height="150vp"
    24         ohos:width="300vp"
    25         ohos:background_element="#E1FFFF"
    26         ohos:layout_alignment="center"
    27 
    28         ohos:normal_text_size="16fp"
    29         ohos:normal_text_color="#FFA500"
    30         ohos:selected_text_size="16fp"
    31         ohos:selected_text_color="#FF0000"
    32 
    33         ohos:bottom_line_element="#40E0D0"
    34         ohos:top_line_element="#40E0D0"
    35 
    36         ohos:shader_color="#1E90FF"
    37         ohos:selected_normal_text_margin_ratio="5.0"
    38         ohos:wheel_mode_enabled="true"
    39         />
    40 
    41     <DirectionalLayout
    42         ohos:top_margin="10vp"
    43         ohos:left_margin="20vp"
    44         ohos:height="100vp"
    45         ohos:width="match_parent"
    46         ohos:orientation="horizontal"
    47         >
    48 
    49         <Picker
    50             ohos:id="$+id:picker_Group"
    51             ohos:height="match_parent"
    52             ohos:width="150vp"
    53             ohos:background_element="#E1FFFF"
    54             ohos:layout_alignment="center"
    55 
    56             ohos:normal_text_size="16fp"
    57             ohos:normal_text_color="#FFA500"
    58             ohos:selected_text_size="16fp"
    59             ohos:selected_text_color="#FF0000"
    60 
    61             ohos:bottom_line_element="#40E0D0"
    62             ohos:top_line_element="#40E0D0"
    63 
    64             ohos:shader_color="#1E90FF"
    65             ohos:selected_normal_text_margin_ratio="5.0"
    66             ohos:wheel_mode_enabled="true"
    67             />
    68         <Picker
    69             ohos:id="$+id:picker_Item"
    70             ohos:height="match_parent"
    71             ohos:width="150vp"
    72             ohos:background_element="#E1FFFF"
    73             ohos:layout_alignment="center"
    74             ohos:left_margin="1vp"
    75 
    76             ohos:normal_text_size="16fp"
    77             ohos:normal_text_color="#FFA500"
    78             ohos:selected_text_size="16fp"
    79             ohos:selected_text_color="#FF0000"
    80 
    81             ohos:bottom_line_element="#40E0D0"
    82             ohos:top_line_element="#40E0D0"
    83 
    84             ohos:shader_color="#1E90FF"
    85             ohos:selected_normal_text_margin_ratio="5.0"
    86             ohos:wheel_mode_enabled="true"
    87             />
    88 
    89     </DirectionalLayout>
    90 
    91 </DirectionalLayout>

    >> Slice代码

      1 package com.example.pickerdemo.slice;
      2 
      3 import com.example.pickerdemo.ResourceTable;
      4 import ohos.aafwk.ability.AbilitySlice;
      5 import ohos.aafwk.content.Intent;
      6 import ohos.agp.components.Picker;
      7 import ohos.agp.components.Text;
      8 import ohos.agp.text.Font;
      9 import ohos.agp.utils.Color;
     10 
     11 public class MainAbilitySlice extends AbilitySlice {
     12 
     13     String[] WEEKDAYS = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
     14     String[] GROUPS = {"魏","蜀","吴"};
     15     String[][] ITEMS = {{"曹操","张辽","夏候惇","夏候渊","许褚","典韦"},
     16                         {"刘备","关羽","张飞"},
     17                         {"孙权","周瑜","吕蒙","孙坚","孙策","黄盖"}};
     18     //想实现首尾数据循环展示,最少要6个数据,因为可直接看到的5个
     19     //即使改变容器高度也是一样滴;
     20 
     21     Integer GroupIDX = 0;
     22 
     23     @Override
     24     public void onStart(Intent intent) {
     25         super.onStart(intent);
     26         super.setUIContent(ResourceTable.Layout_ability_main);
     27 
     28         Text text = (Text) findComponentById(ResourceTable.Id_text_chg);
     29         Picker picker = (Picker) findComponentById(ResourceTable.Id_picker_test);
     30         SetPicker(text, picker, WEEKDAYS);
     31         //主从联动
     32         Picker group = (Picker) findComponentById(ResourceTable.Id_picker_Group);
     33         Picker item = (Picker) findComponentById(ResourceTable.Id_picker_Item);
     34         SetGrpItem(group,item);
     35     }
     36 
     37     private void SetGrpItem(Picker grp,Picker item) {
     38         //设置取值范围
     39         grp.setMinValue(0);
     40         grp.setMaxValue(GROUPS.length - 1);
     41         //值的变化
     42         grp.setValueChangedListener(new Picker.ValueChangedListener() {
     43             @Override
     44             public void onValueChanged(Picker picker, int i, int i1) {
     45                 GroupIDX = i1; //标识当前选中的是第几组
     46                 ReSetItem(item);
     47             }
     48         });
     49         //设置要显示的信息数组
     50         //picker.setDisplayedData(new String[]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"});
     51         //格式化显示
     52         grp.setFormatter(new Picker.Formatter() {
     53             @Override
     54             public String format(int i) {
     55                 return GROUPS[i]; //返回格式化后的内容项
     56             }
     57         });
     58         grp.setValue(0);
     59         ReSetItem(item); //设置从表默认展示
     60         //字符设置
     61         grp.setNormalTextFont(Font.DEFAULT_BOLD);
     62         grp.setNormalTextSize(40);
     63         grp.setNormalTextColor(new Color(Color.getIntColor("#FFA500")));
     64         grp.setSelectedTextFont(Font.DEFAULT_BOLD);
     65         grp.setSelectedTextSize(40);
     66         grp.setSelectedTextColor(new Color(Color.getIntColor("#FF0000")));
     67     }
     68 
     69     private void ReSetItem(Picker item) {
     70         item.setMinValue(0);
     71         item.setMaxValue(ITEMS[GroupIDX].length-1); //取二维数组
     72         item.setValue(0);
     73         item.setFormatter(new Picker.Formatter() {
     74             @Override
     75             public String format(int i) {
     76                 return ITEMS[GroupIDX][i]; //取二维组中的内容
     77             }
     78         });
     79         //字符设置
     80         item.setNormalTextFont(Font.DEFAULT_BOLD);
     81         item.setNormalTextSize(40);
     82         item.setNormalTextColor(new Color(Color.getIntColor("#FFA500")));
     83         item.setSelectedTextFont(Font.DEFAULT_BOLD);
     84         item.setSelectedTextSize(40);
     85         item.setSelectedTextColor(new Color(Color.getIntColor("#FF0000")));
     86     }
     87 
     88 
     89     private void SetPicker(Text text, Picker picker, String[] infos) {
     90         //设置取值范围
     91         picker.setMinValue(0);
     92         picker.setMaxValue(infos.length - 1);
     93         //值的变化
     94         picker.setValueChangedListener(new Picker.ValueChangedListener() {
     95             @Override
     96             public void onValueChanged(Picker picker, int i, int i1) {
     97                     text.setText("from " + i + " to " + i1);
     98             }
     99         });
    100         //设置要显示的信息数组
    101         //picker.setDisplayedData(new String[]{"Mon","Tue","Wed","Thu","Fri","Sat","Sun"});
    102         //格式化显示
    103         picker.setFormatter(new Picker.Formatter() {
    104             @Override
    105             public String format(int i) {
    106                 return infos[i];
    107             }
    108         });
    109         picker.setValue(0);
    110         //字符设置
    111         picker.setNormalTextFont(Font.DEFAULT_BOLD);
    112         picker.setNormalTextSize(40);
    113         picker.setNormalTextColor(new Color(Color.getIntColor("#FFA500")));
    114         picker.setSelectedTextFont(Font.DEFAULT_BOLD);
    115         picker.setSelectedTextSize(40);
    116         picker.setSelectedTextColor(new Color(Color.getIntColor("#FF0000")));
    117     }
    118 
    119     @Override
    120     public void onActive() {
    121         super.onActive();
    122     }
    123 
    124     @Override
    125     public void onForeground(Intent intent) {
    126         super.onForeground(intent);
    127     }
    128 }

     

         

            

  • 相关阅读:
    JavaScript设计模式样例八 —— 适配器模式
    JavaScript设计模式样例七 —— 原型模式
    JavaScript设计模式样例六 —— 抽象工厂模式
    JavaScript设计模式样例五 —— 建造者模式
    JS比较两个时间的时间差
    使用nginx实现纯前端跨越
    npm的使用总结
    优雅的格式化时间显示
    优雅的封装ajax,含跨域
    将自己的域名代理到Gitpages
  • 原文地址:https://www.cnblogs.com/jieling/p/15476426.html
Copyright © 2011-2022 走看看