找回密码
 立即注册
查看: 3231|回复: 0

EFL优化篇:优化Tizen本机应用程序

[复制链接]
发表于 2015-10-1 20:08:11 | 显示全部楼层 |阅读模式
本教程演示了如何优化Tizen本机应用程序。
热身

熟悉Edje、 Elementary和eva API通过学习基本知识:
优化EDC

优化EDC代码。
优化eva

优化eva代码。

优化EDC

优化EDC:

  • 删除不必要的部分。
    当您创建EDC,过时的和不必要的部分。 因为他们对性能有影响,移除它们。


  • 删除不必要的部分。当您创建EDC,过时的和不必要的部分。 因为他们对性能有影响,移除它们。
    1. <font size="3">collections
    2. {
    3.    group
    4.    {
    5.       name: "main";
    6.       parts
    7.       {
    8.          part
    9.          {
    10.             name: "bg";
    11.             type: RECT;
    12.             description
    13.             {
    14.                state: "default" 0.0;
    15.                rel1.relative: 0.0 0.0;
    16.                rel2.relative: 1.0 1.0;
    17.                color: 255 255 255 255;
    18.             }
    19.          }
    20.          part
    21.          {
    22.             name: "new";
    23.             type: RECT;
    24.             scale: 1;
    25.             mouse_events: 1;
    26.             description
    27.             {
    28.                state: "default" 0.0;
    29.                color: 255 255 0 255;
    30.                rel1.relative: 0.2 0.2;
    31.                rel2.relative: 0.8 0.8;
    32.             }
    33.          }
    34.          part
    35.          {
    36.             name: "old";
    37.             type: RECT;
    38.             scale: 1;
    39.             mouse_events: 1;
    40.             description
    41.             {
    42.                state: "default" 0.0;
    43.                color: 0 0 0 0;
    44.                rel1.relative: 0.5 0.5;
    45.                rel2.relative: 1.0 1.0;
    46.             }
    47.          }
    48.       }
    49.    }
    50. }</font>
    复制代码


    1. <font size="3">collections
    2. {
    3.    group
    4.    {
    5.       name: "main";
    6.       parts
    7.       {
    8.          part
    9.          {
    10.             name: "bg";
    11.             type: RECT;
    12.             description
    13.             {
    14.                state: "default" 0.0;
    15.                rel1.relative: 0.0 0.0;
    16.                rel2.relative: 1.0 1.0;
    17.                color: 255 255 255 255;
    18.             }
    19.          }
    20.          part
    21.          {
    22.             name: "new";
    23.             type: RECT;
    24.             scale: 1;
    25.             mouse_events: 1;
    26.             description
    27.             {
    28.                state: "default" 0.0;
    29.                color: 255 255 0 255;
    30.                rel1.relative: 0.2 0.2;
    31.                rel2.relative: 0.8 0.8;
    32.             }
    33.          }  













    34.       
    35.       }
    36.    }
    37. }</font>
    复制代码

  • 使用文本,如果可能的话,而不是Textblock。

以下edc导致相同的结果。 然而,使用文本为高性能除了使用简单的文本标签或多个行。
  1. <font size="3">collections
  2. {
  3.    styles
  4.    {
  5.       style
  6.       {
  7.          name: "text_style";
  8.          base: "font="Sans" font_size=30 text_class=entry
  9.          color=#0088AA style=shadow,bottom
  10.          shadow_color=#00000080 valign=0.5 ellipsis=1.0
  11.          wrap=none align=center";
  12.       }
  13.    }
  14.    group
  15.    {
  16.       name: "main";
  17.       parts
  18.       {
  19.          part
  20.          {
  21.             name: "text";
  22.             type: TEXTBLOCK;
  23.             scale: 1;
  24.             description
  25.             {
  26.                state: "default" 0.0;
  27.                text
  28.                {
  29.                   style: "text_style";
  30.                   text: "TEXT";
  31.                }
  32.             }
  33.          }
  34.       }
  35.    }
  36. }</font>
复制代码


  1. <font size="3">collections
  2. {
  3.    group
  4.    {
  5.       name: "main";
  6.       part
  7.       {
  8.          name: "simple";
  9.          type: TEXT;
  10.          scale: 1;
  11.          effect: SHADOW;
  12.          description
  13.          {
  14.             state: "default" 0.0;
  15.             align: 0.5 0.5;
  16.             color: 0 136 170 255;
  17.             visible: 1;
  18.             text
  19.             {
  20.                size: 30;
  21.                font: "Sans";
  22.                text: "TEXT";
  23.             }
  24.          }
  25.       }
  26.    }
  27. }</font>
复制代码


3.压缩图片和你的图片嵌入到EDC。
当你使用一个固定的形象,这是更有效的EDC内调用一个图像。 这节省时间在获得图像数据和更适合的数据大小。

  1. <font size="3">collections
  2. {
  3.    images
  4.    {
  5.       image: "logo.png" COMP;
  6.    }
  7.    group
  8.    {
  9.       name: "main";
  10.       parts
  11.       {
  12.          part
  13.          {
  14.             name: "logo";
  15.             type: IMAGE;
  16.             description
  17.             {
  18.                state: "default" 0.0;
  19.                rel1.relative: 0.0 0.0;
  20.                rel2.relative: 1.0 1.0;
  21.                image.normal: "logo.png";
  22.                aspect: 1 1;
  23.                aspect_preference: BOTH;
  24.             }
  25.          }
  26.       }
  27.    }
  28. }</font>
复制代码

4.如果可能的话,使用间隔部分。
当你使用(如填充部分)是无形的,但有一个大小,使用间隔更有效率。 由于垫片是无形的,它没有可见的和颜色选项。


  1. <font size="3">collections
  2. {
  3.    group
  4.    {
  5.       name: "main";
  6.       parts
  7.       {
  8.          part
  9.          {
  10.             name: "bg";
  11.             type: RECT;
  12.             description
  13.             {
  14.                state: "default" 0.0;
  15.                color: 255 255 255 255;
  16.             }         
  17.          }
  18.          part
  19.          {
  20.             name: "padding_left_top";
  21.             type: RECT;
  22.             description
  23.             {
  24.                state: "default" 0.0;
  25.                color: 0 0 0 0;
  26.                rel1.to: "bg";
  27.                rel2.to:"bg";
  28.                rel2.relative: 0.0 0.0;
  29.                align: 0.0 0.0;               
  30.                min: 100 100;        
  31.             }
  32.          }
  33.          part
  34.          {
  35.             name: "padding_right_bottom";
  36.             type: RECT;
  37.             description
  38.             {
  39.                state: "default" 0.0;
  40.                color: 0 0 0 0;
  41.                rel1.to: "bg";
  42.                rel1.relative: 1.0 1.0;
  43.                rel2.to:"bg";
  44.                align: 1.0 1.0;               
  45.                min: 100 100;
  46.             }         
  47.          }
  48.          part
  49.          {
  50.             name: "content";
  51.             type: RECT;
  52.             description
  53.             {
  54.                state: "default" 0.0;
  55.                color: 255 255 0 255;
  56.                rel1.to: "padding_left_top";
  57.                rel1.relative: 1.0 1.0;
  58.                rel2.to:"padding_right_bottom";
  59.                rel2.relative: 0.0 0.0;
  60.             }         
  61.          }
  62.       }
  63.    }
  64. }</font>
复制代码

  1. <font size="3">collections
  2. {
  3.    group
  4.    {
  5.       name: "main";
  6.       parts
  7.       {
  8.          part
  9.          {
  10.             name: "bg";
  11.             type: RECT;
  12.             description
  13.             {
  14.                state: "default" 0.0;
  15.                color: 255 255 255 255;
  16.             }         
  17.          }
  18.          part
  19.          {
  20.             name: "padding_left_top";
  21.             type: SPACER;
  22.             description
  23.             {
  24.                state: "default" 0.0;
  25.                rel1.to: "bg";
  26.                rel2.to:"bg";
  27.                rel2.relative: 0.0 0.0;
  28.                align: 0.0 0.0;               
  29.                min: 100 100;
  30.             }         
  31.          }
  32.          part
  33.          {
  34.             name: "padding_right_bottom";
  35.             type: SPACER;
  36.             description
  37.             {
  38.                state: "default" 0.0;
  39.                rel1.to: "bg";
  40.                rel1.relative: 1.0 1.0;
  41.                rel2.to:"bg";
  42.                align: 1.0 1.0;               
  43.                min: 100 100;
  44.             }         
  45.          }
  46.          part
  47.          {
  48.             name: "content";
  49.             type: RECT;
  50.             description
  51.             {
  52.                state: "default" 0.0;
  53.                color: 255 255 0 255;
  54.                rel1.to: "padding_left_top";
  55.                rel1.relative: 1.0 1.0;
  56.                rel2.to:"padding_right_bottom";
  57.                rel2.relative: 0.0 0.0;
  58.             }         
  59.          }
  60.       }
  61.    }
  62. }</font>
复制代码


5.使用图像边界特性。

当你使用一个图像,您不需要使用一个完整的尺寸或更大尺寸的形象。 正如您将在下面看到的,它是更有效规模图像使用边界选项。

之前后



  1. <font size="3">collections
  2. {
  3.    images
  4.    {
  5.       image: "test.png" COMP;
  6.    }
  7.    group
  8.    {
  9.       name: "main";
  10.       parts
  11.       {
  12.          part
  13.          {
  14.             name: "test";
  15.             type: IMAGE;
  16.             description
  17.             {
  18.                state: "default" 0.0;
  19.                rel1.relative: 0.2 0.2;
  20.                rel2.relative: 0.8 0.8;
  21.                image.normal: "test.png";

  22.             }
  23.          }
  24.       }
  25.    }
  26. }</font>
复制代码


  1. <font size="3">collections
  2. {
  3.    images
  4.    {
  5.       image: "test.png" COMP;
  6.    }
  7.    group
  8.    {
  9.       name: "main";
  10.       parts
  11.       {
  12.          part
  13.          {
  14.             name: "test";
  15.             type: IMAGE;
  16.             description
  17.             {
  18.                state: "default" 0.0;
  19.                rel1.relative: 0.2 0.2;
  20.                rel2.relative: 0.8 0.8;
  21.                image.normal: "test.png";
  22.                image.border: 5 5 5 5;
  23.             }
  24.          }
  25.       }
  26.    }
  27. }</font>
复制代码



优化eva
优化eva:
  • 使用矩形对象,而不是使用纯色图像。
    当你需要一个坚实的颜色对象,它是更好的(更有效率)使用一个矩形比图像对象。

    之前
    1. <font size="3">image = elm_image_add(win);
    2. snprintf(buf, sizeof(buf), "%s/images/white_bg.png", elm_app_data_dir_get());
    3. elm_image_file_set(image, buf, NULL);
    4. evas_object_size_hint_weight_set(image, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    5. elm_win_resize_object_add(win, image);
    6. evas_object_show(image);</font>
    复制代码


    1. <font size="3">rect = evas_object_rectangle_add(evas_object_evas_get(win));
    2. evas_object_color_set(rect, 255, 255, 255, 255);
    3. evas_object_size_hint_weight_set(rect, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
    4. elm_win_resize_object_add(win, rect);
    5. evas_object_show(rect);</font>
    复制代码



2.使物体隐形,而不是设置α为0。
使物体隐形,更高效的使用 evas_object_hide () 而不是改变alpha值为0。

之前
  1. <font size="3">static void
  2. _invisible_cb(void *data, Evas_Object *obj, void *ev)
  3. {
  4.    evas_object_color_set(obj, 0, 0, 0, 0);   
  5. }</font>
复制代码


  1. <font size="3">static void
  2. _invisible_cb(void *data, Evas_Object *obj, void *ev)
  3. {
  4.    evas_object_hide(obj);   
  5. }</font>
复制代码


3.如果你需要最大的优化,使用 evas_object_image 而不是 elm_image elm_icon
之前
  1. <font size="3"><div class="blockcode"><blockquote>
  2. 之前        后
  3. static void
  4. _invisible_cb(void *data, Evas_Object *obj, void *ev)
  5. {
  6.    evas_object_color_set(obj, 0, 0, 0, 0);   
  7. }


  8. static void
  9. _invisible_cb(void *data, Evas_Object *obj, void *ev)
  10. {
  11.    evas_object_hide(obj);   
  12. }
  13. </font>
复制代码


  1. <font size="3"><div class="blockcode"><blockquote>img = evas_object_image_add(evas_object_evas_get(parent));
  2. snprintf(buf, sizeof(buf), "%s/images/white_bg.png", elm_app_data_dir_get());
  3. evas_object_image_file_set(img, buf, NULL);
  4. evas_object_image_filled_set(img, EINA_TRUE);
  5. evas_object_size_hint_weight_set(img, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
  6. evas_object_size_hint_align_set(img, EVAS_HINT_FILL, EVAS_HINT_FILL);
  7. evas_object_show(img);</font>
复制代码



4.正确设置家长为了避免初等树重建。
创建一个对象之前,确保父母和孩子之间的关系是正确设置为了避免以后重建。
之前
  1. <font size="3">win = elm_win_add();

  2. scroller = elm_scroller_add(win);

  3. box = elm_box_add(win);

  4. button = elm_button_add(win);</font>
复制代码


  1. <font size="3">win = elm_win_add();

  2. scroller = elm_scroller_add(win);

  3. box = elm_box_add(scroller);

  4. button = elm_button_add(box);</font>
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
欢迎来到泰泽网:http://www.tizennet.com/ 泰泽论坛:http://bbs.tizennet.com/ 好没有内涵哦,快到设置中更改这个无聊的签名吧!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|泰泽应用|泰泽论坛|泰泽网|小黑屋|Archiver|手机版|泰泽邮箱|泰泽网 ( 蜀ICP备13024062号-1 )

GMT+8, 2024-11-27 21:52 , Processed in 0.073128 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表