首页 > 其他 > 详细

twrp 2.7.0 ui.xml简单分析,布局讲解,第一章

时间:2014-04-20 22:13:49      阅读:1030      评论:0      收藏:0      [点我收藏+]

 

twrp 的ui.xml文件在bootable/recovery/gui/devices/$(DEVICE_RESOLUTION)/res目录里面

下面我主要分析的是720x1280分辨率的界面布局及功能的实现。

 

文件的一开始有如下的定义:

bubuko.com,布布扣
<recovery>
    <details>
        <resolution width="720" height="1280" />
        <author>TeamWin</author>
        <title>Backup Naowz</title>
        <description>Default basic theme</description>
        <preview>preview.jpg</preview>
    </details>

    <resources>
        <resource name="font" type="font" filename="Roboto-Condensed-30" />
        <resource name="mediumfont" type="font" filename="Roboto-Condensed-30" />
        <resource name="filelist" type="font" filename="Roboto-Condensed-30" />
        <resource name="top_bar" type="image" filename="top-bar.jpg" />
        <resource name="main_button" type="image" filename="menu-button" />
        <resource name="file_icon" type="image" filename="file" />
        <resource name="folder_icon" type="image" filename="folder" />
        <resource name="slideout" type="image" filename="slideout" />
        <resource name="progress" type="animation" filename="indeterminate" />
        <resource name="progress_empty" type="image" filename="progress_empty" />
        <resource name="progress_full" type="image" filename="progress_fill" />
        <resource name="checkbox_false" type="image" filename="checkbox_empty" />
        <resource name="checkbox_true" type="image" filename="checkbox_checked" />
        <resource name="radio_false" type="image" filename="radio_empty" />
        <resource name="radio_true" type="image" filename="radio_selected" />
        <resource name="medium_button" type="image" filename="medium-button" />
        <resource name="sort_button" type="image" filename="sort-button" />
        <resource name="minus_button" type="image" filename="minus-button" />
        <resource name="plus_button" type="image" filename="plus-button" />
        <resource name="home_icon" type="image" filename="home-icon" />
        <resource name="back_icon" type="image" filename="back-icon" />
        <resource name="slider" type="image" filename="slider" />
        <resource name="slider-used" type="image" filename="slider-used" />
        <resource name="slider-touch" type="image" filename="slider-touch" />
        <resource name="unlock-icon" type="image" filename="unlock" />
        <resource name="keyboard1" type="image" filename="keyboard1" />
        <resource name="keyboard2" type="image" filename="keyboard2" />
        <resource name="keyboard3" type="image" filename="keyboard3" />
        <resource name="keyboard4" type="image" filename="keyboard4" />
        <resource name="cursor" type="image" filename="cursor" />
    </resources>
bubuko.com,布布扣

定义的是要调用的资源的相关参数

 

bubuko.com,布布扣
<variables>
        <variable name="col1_x" value="10" />
        <variable name="col2_x" value="373" />
        <variable name="col_center_x" value="191" />
        <variable name="col_center_medium_x" value="275" />
        <variable name="center_x" value="360" />
        <variable name="row1_y" value="170" />
        <variable name="row2_y" value="410" />
        <variable name="row3_y" value="650" />
        <variable name="row4_y" value="890" />
        <variable name="col1_center_x" value="179" />
        <variable name="col2_center_x" value="552" />
        <variable name="row1_text2_y" value="310" />
        <variable name="row2_text2_y" value="550" />
        <variable name="row_queue_y" value="760" />
        <variable name="row1_header_y" value="120" />
        <variable name="row1_text_y" value="170" />
        <variable name="row2_text_y" value="220" />
        <variable name="row3_text_y" value="270" />
        <variable name="row4_text_y" value="320" />
        <variable name="row5_text_y" value="370" />
        <variable name="row6_text_y" value="420" />
        <variable name="row7_text_y" value="470" />
        <variable name="row8_text_y" value="520" />
        <variable name="row9_text_y" value="570" />
        <variable name="row10_text_y" value="620" />
        <variable name="row11_text_y" value="670" />
        <variable name="row12_text_y" value="720" />
        <variable name="row13_text_y" value="770" />
        <variable name="row14_text_y" value="820" />
        <variable name="row15_text_y" value="870" />
        <variable name="row16_text_y" value="920" />
        <variable name="row17_text_y" value="970" />
        <variable name="row18_text_y" value="1020" />
        <variable name="zip_status_y" value="615" />
        <variable name="tz_selected_y" value="160" />
        <variable name="tz_set_y" value="950" />
        <variable name="tz_current_y" value="1180" />
        <variable name="col_progressbar_x" value="234" />
        <variable name="row_progressbar_y" value="1100" 

                  ...
                  ...

        
        <variable name="slidervalue_lineh" value="2" />
        <variable name="slidervalue_padding" value="20" />
        <variable name="slidervalue_sliderw" value="10" />
        <variable name="slidervalue_sliderh" value="60" />
    </variables>
bubuko.com,布布扣

variables: 定义的是相关的变量,图标的位置,变量的颜色。

下面是最基本的模块 <templates> ,里面定义了头部分,进度条

bubuko.com,布布扣
<templates>
                <!-- 这个是头部分定义 ,第一个page 都会调用到的
                 在这里定义了版本信息,电量信息,……
                 -->
        <template name="header">
            <background color="#000000FF" />

            <object type="image">
                <image resource="top_bar" />
                <placement x="0" y="0" />
            </object>

            <object type="text" color="%text_color%">
                <font resource="font" />
                <placement x="120" y="10" />
                <text>Team Win Recovery Project  v%tw_version%</text>
            </object>

            <object type="text" color="%text_color%">
                <condition var1="tw_simulate_actions" var2="1" />
                <font resource="font" />
                <placement x="120" y="45" />
                <text>SIMULATING ACTIONS</text>
            </object>

            <object type="text" color="%text_color%">
                <font resource="font" />
                <placement x="120" y="76" />
                <text>%tw_time%</text>
            </object>

            <object type="text" color="%text_color%">
                <font resource="font" />
                <placement x="270" y="76" />
                <conditions>
                    <condition var1="tw_no_battery_percent" var2="0" />
                    <condition var1="tw_battery" op=">" var2="0" />
                    <condition var1="tw_battery" op="<" var2="101" />
                </conditions>
                <text>Battery: %tw_battery%</text>
            </object>

            <object type="button">
                <highlight color="%highlight_color%" />
                <placement x="%home_button_x%" y="%home_button_y%" />
                <font resource="font" color="%button_text_color%" />
                <text></text>
                <image resource="home_icon" />
                <condition var1="tw_busy" var2="0" />
                <action function="key">home</action>
            </object>

            <object type="button">
                <highlight color="%highlight_color%" />
                <placement x="%back_button_x%" y="%back_button_y%" />
                <font resource="font" color="%button_text_color%" />
                <text></text>
                <image resource="back_icon" />
                <condition var1="tw_busy" var2="0" />
                <action function="key">back</action>
            </object>

            <object type="action">
                <touch key="power" />
                <action function="overlay">lock</action>
            </object>
        </template>
bubuko.com,布布扣

 

下面分析最简单的功能 <page name="reboot"> <!-- 这个是重启菜单的定义布局 -->

bubuko.com,布布扣
  1     <page name="reboot">
  2             <object type="template" name="header" />   <!-- 这里引用临时模块header ,用于显示时间和电量,及版本信息 -->
  3 
  4             <object type="text" color="%text_color%">    <!--  开始 text 变量的定义,也是文字的颜色 --> 
  5                 <font resource="font" />                 <!-- 引用字体资源 ,在最开始的资源变量中有定义 -->
  6                 <placement x="%center_x%" y="%row1_header_y%" placement="5" />  <!-- 这是是定义菜单的显示位置 -->
  7                 <text>Reboot Menu</text>            <!-- 显示在reboot菜单的最顶端, "Reboot Menu" -->
  8             </object>                               <!-- 结束 text 的定义 -->
  9 
 10             <object type="button">                 <!-- 按钮定义 --> 
 11                 <highlight color="%highlight_color%" />
 12                 <condition var1="tw_reboot_system" var2="1" />   
 13                 <placement x="%col1_x%" y="%row1_y%" />        <!-- 定义这个按钮的位置, 在第一行,第一列 -->
 14                 <font resource="font" color="%button_text_color%" />
 15                 <text>System</text>      
 16                 <image resource="main_button" />      <!-- 声明这个按钮是主按钮,-->
 17                 <actions>                             <!-- 声明要执行的操作 -->
 18                     <action function="set">tw_back=reboot</action>      <!-- 声明要返回的page -->
 19                     <action function="set">tw_action=reboot</action>     <!-- 声明要执行的命令reboot ,这个命令人在actions.cpp中会检查 -->
 20                     <action function="set">tw_action_param=system</action>    <!-- 命令要用到的参数,这里是system 
 21                     <action function="set">tw_has_action2=0</action>
 22                     <action function="set">tw_text1=No OS Installed! Are you</action>
 23                     <action function="set">tw_text2=sure you wish to reboot?</action>
 24                     <action function="set">tw_action_text1=Rebooting...</action>
 25                     <action function="set">tw_complete_text1=Rebooting...</action>
 26                     <action function="set">tw_slider_text=Swipe to Reboot</action>
 27                     <action function="page">rebootcheck</action>
 28                 </actions>
 29             </object>
 30 
 31             <object type="button">
 32                 <highlight color="%highlight_color%" />
 33                 <condition var1="tw_reboot_poweroff" var2="1" />
 34                 <placement x="%col2_x%" y="%row1_y%" />    <!-- 位置是第一行,第二列 -->
 35                 <font resource="font" color="%button_text_color%" />
 36                 <text>Power Off</text>
 37                 <image resource="main_button" />
 38                 <actions>
 39                     <action function="set">tw_back=reboot</action>
 40                     <action function="set">tw_action=reboot</action>
 41                     <action function="set">tw_action_param=poweroff</action>
 42                     <action function="set">tw_has_action2=0</action>
 43                     <action function="set">tw_text1=No OS Installed! Are you</action>
 44                     <action function="set">tw_text2=sure you wish to power off?</action>
 45                     <action function="set">tw_action_text1=Turning Off...</action>
 46                     <action function="set">tw_complete_text1=Turning Off...</action>
 47                     <action function="set">tw_slider_text=Swipe to Power Off</action>
 48                     <action function="page">rebootcheck</action>
 49                 </actions>
 50             </object>
 51 
 52             <object type="button">
 53                 <highlight color="%highlight_color%" />
 54                 <condition var1="tw_reboot_recovery" var2="1" />
 55                 <placement x="%col1_x%" y="%row2_y%" />    <!-- 第二行,第一列 -->
 56                 <font resource="font" color="%button_text_color%" />
 57                 <text>Recovery</text>
 58                 <image resource="main_button" />
 59                 <actions>
 60                     <action function="set">tw_back=reboot</action>
 61                     <action function="set">tw_action=reboot</action>
 62                     <action function="set">tw_action_param=recovery</action>
 63                     <action function="set">tw_has_action2=0</action>
 64                     <action function="set">tw_text1=No OS Installed! Are you</action>
 65                     <action function="set">tw_text2=sure you wish to reboot?</action>
 66                     <action function="set">tw_action_text1=Rebooting...</action>
 67                     <action function="set">tw_complete_text1=Rebooting...</action>
 68                     <action function="set">tw_slider_text=Swipe to Reboot</action>
 69                     <action function="page">rebootcheck</action>
 70                 </actions>
 71             </object>
 72 
 73             <object type="button">
 74                 <highlight color="%highlight_color%" />
 75                 <condition var1="tw_reboot_bootloader" var2="1" />
 76                 <placement x="%col2_x%" y="%row2_y%" />
 77                 <font resource="font" color="%button_text_color%" />
 78                 <text>Bootloader</text>
 79                 <image resource="main_button" />
 80                 <actions>
 81                     <action function="set">tw_back=reboot</action>
 82                     <action function="set">tw_action=reboot</action>
 83                     <action function="set">tw_action_param=bootloader</action>
 84                     <action function="set">tw_has_action2=0</action>
 85                     <action function="set">tw_text1=No OS Installed! Are you</action>
 86                     <action function="set">tw_text2=sure you wish to reboot?</action>
 87                     <action function="set">tw_action_text1=Rebooting...</action>
 88                     <action function="set">tw_complete_text1=Rebooting...</action>
 89                     <action function="set">tw_slider_text=Swipe to Reboot</action>
 90                     <action function="page">rebootcheck</action>
 91                 </actions>
 92             </object>
 93 
 94             <object type="button">
 95                 <highlight color="%highlight_color%" />
 96                 <condition var1="tw_download_mode" var2="1" />
 97                 <placement x="%col1_x%" y="%row3_y%" />
 98                 <font resource="font" color="%button_text_color%" />
 99                 <text>Download</text>
100                 <image resource="main_button" />
101                 <actions>
102                     <action function="set">tw_back=reboot</action>
103                     <action function="set">tw_action=reboot</action>
104                     <action function="set">tw_action_param=download</action>
105                     <action function="set">tw_has_action2=0</action>
106                     <action function="set">tw_text1=No OS Installed! Are you</action>
107                     <action function="set">tw_text2=sure you wish to reboot?</action>
108                     <action function="set">tw_action_text1=Rebooting...</action>
109                     <action function="set">tw_complete_text1=Rebooting...</action>
110                     <action function="set">tw_slider_text=Swipe to Reboot</action>
111                     <action function="page">rebootcheck</action>
112                 </actions>
113             </object>
114 
115             <object type="action">
116                 <touch key="home" />    <!-- 在菜单的最底部,定义的动作, home 键 -->
117                 <action function="page">main</action>   <!-- 回到的<page name="main">
118             </object>
119 
120             <object type="action">
121                 <touch key="back" />           <!-- 返回键 back -->
122                 <action function="page">main</action>
123             </object>
124 
125             <object type="template" name="footer" />    <!-- 临时模块 footer -->
126         </page>                                          <!-- page 模块的结束 -->
bubuko.com,布布扣

 

下面来讲解一下实现sideload功能的page 

bubuko.com,布布扣
 1 <page name="sideload">
 2             <object type="template" name="header" />
 3 
 4             <object type="text" color="%text_color%">
 5                 <font resource="font" />
 6                 <placement x="%center_x%" y="%row1_header_y%" placement="5"/>
 7                 <text>ADB Sideload</text>
 8             </object>
 9 
10             <object type="checkbox">    <!--这里是checkbox 选项 ,其中的变量,需要修改data.cpp -->
11                 <placement x="%col1_x%" y="%row2_text_y%" />
12                 <font resource="font" color="%text_color%" />
13                 <text>Wipe Dalvik Cache.</text>
14                 <data variable="tw_wipe_dalvik" />     <!-- 这个变量的定义如下:mvalues.insert(make_pair("tw_wipe_cache", make_pair("0", 0))); 初始化为 0 即, false -->

15 <image checked="checkbox_true" unchecked="checkbox_false" /> <!-- 设置相应的图片显示已经选,没有选 --> 16 </object> 17 18 <object type="checkbox"> 19 <placement x="%col1_x%" y="%row3_text_y%" /> 20 <font resource="font" color="%text_color%" /> 21 <text>Wipe Cache.</text> 22 <data variable="tw_wipe_cache" /> 23 <image checked="checkbox_true" unchecked="checkbox_false" /> 24 </object> 25 26 <object type="slider"> 27 <placement x="%slider_x%" y="%slider_y%" /> 28 <resource base="slider" used="slider-used" touch="slider-touch" /> 29 <actions> 30 <action function="set">tw_back=advanced</action> 31 <action function="set">tw_action=adbsideload</action> 32 <action function="set">tw_action_text1=ADB Sideload</action> 33 <action function="set">tw_action_text2=Usage: adb sideload filename.zip</action> 34 <action function="set">tw_complete_text1=ADB Sideload Complete</action> 35 <action function="set">tw_has_cancel=1</action> 36 <action function="set">tw_show_reboot=1</action> 37 <action function="set">tw_cancel_action=adbsideloadcancel</action> 38 <action function="page">action_page</action> <!-- 这个page 实现的功能就是,新开一个page,并显示进度条 --> 39 </actions> 40 </object> 41 42 <object type="text" color="%text_color%"> 43 <font resource="font" /> 44 <placement x="%center_x%" y="%slider_text_y%" placement="4" /> 45 <text>Swipe to Start Sideload</text> <!-- 在slider里面显示的文件 --> 46 </object> 47 48 <object type="action"> 49 <touch key="home" /> 50 <action function="page">main</action> 51 </object> 52 53 <object type="action"> 54 <touch key="back" /> 55 <action function="page">advanced</action> 56 </object> 57 58 <object type="template" name="footer" /> 59 </page>
bubuko.com,布布扣

 

twrp 2.7.0 ui.xml简单分析,布局讲解,第一章,布布扣,bubuko.com

twrp 2.7.0 ui.xml简单分析,布局讲解,第一章

原文:http://www.cnblogs.com/sn-dnv-aps/p/3676202.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!