常见问题回复

1. Inone应用层开发语言和开发系统环境?

回复:Inone应用层开发基于C/C++语言开发,其OS系统基于深度优化linux,GUI基于InoneGUI,所以在linux开发的第三方包可以快速移植Inone应用中。

2. 如何整合自己的C/C++文件和头文件到Inone应用层?

回复:添加C/C++代码文件直接到userctrl目录即可,头文件添加到include目录下,Makefile文件已经做到自动扫描上面两个目录的头文件和代码文件,所以理论上无需调整;但如需要link第三方的库文件,需要修改Makefile里的LINKFLAGS变量,在其后加上自己的链接库即可。

3. 如何固化应用程序到系统FW?

回复:此部分需要联系Inone公司对应窗口工程师来处理。

4. 如何使用定时器?

回复:启动定时器START_TIMER(X),停止定时器STOP_TIMER(X),定时器间隔X最小单位为10ms,所以如需要不同的定时器,X请按10的倍数关系来处理。

5. 如何强制更新控件UI?

回复:可以使用控件对象pctrl->AddRefreshCtrl()来强制刷新它。

6. 如何控制按键控件状态不要自动切换,如从非选中状态切到选中状态?

回复:可以在按键的OnClick函数里,调用pControl->SetSelected(FALSE)强制复归状态。

7. 如何实现回主界面和返回功能?

回复:回主界面:mpActivity->GoHome(); 返回:mpActivity->GoBack();

8. 如何传输按键事件给激活页面?

回复:InoPostMessage(MSG_KEY_DOWN, value);

9. 如何启动APP或页面?

回复:InoLaunchActivity(APP_NAME, ID_XXX_LAYOUT);
9.1 易错点:A应用调用B应用的某个页面ID_XXX_LAYOUT时发生异常
原因:由于ID_XXX_LAYOUT会伴随应用中资源数量动态生成,所以会存在ID_XXX_LAYOUT值变化问题,而调用者页面ID_XXX_LAYOUT没有同步,从而发生异常
对策: 调用者(A应用)使用用户自定义的页面ID,如USER_ID_XXX_LAYOUT
代码:

    ==========
    xxx.h   "xxx"为项目名(A/B应用公共头文件)
    ==========
    #define USER_ID_LAYOUT                  0x1000
    #define USER_ID_LIST_LAYOUT             (USER_ID_LAYOUT + 1)
    #define USER_ID_PICTURE_LAYOUT          (USER_ID_LAYOUT + 2)

    ==========
    xxxactivity.cpp (B应用)
    ==========
    STRING xxxActivity::GetLayoutByID(INT iLayoutID)
    {
        // CLog::LogU("[%s:%s] iLayoutID:%d\n",__FILE__,__FUNCTION__,iLayoutID);
        switch(iLayoutID)
        {
            case USER_ID_LIST_LAYOUT:
            case ID_LIST_LAYOUT:
            {
                return NAME_LIST_LAYOUT;
            }
            case USER_ID_PICTURE_LAYOUT:
            case ID_PICTURE_LAYOUT:
            {
                return NAME_PICTURE_LAYOUT;
            }
            default: return "";
        }
    }

    ==========
    main.cpp (调用者A应用)
    ==========
    VOID MainCtrl::ProgItem_ListItemClick(InoListItem *pControl, INT iIndex, BOOL bLongClick)
    {
      //InoLaunchActivity(APP_NAME, ID_PROGRESS_LAYOUT);
      InoLaunchActivity(APP_NAME, USER_ID_PICTURE_LAYOUT); 
    }

10. 如何传递启动参数给其它APP或页面?

回复:

Get InoLaunchActivity pParam pointer
eg: get pParam value

INT pParam = 20;   
InoLaunchActivity(APP_NAME,ID_MAIN_LAYOUT,(LPVOID)pParam);   
INT param = LAUNCHACTIVITY_PARAM();   
#define LAUNCHACTIVITY_PARAM() (mpPage->GetPageParam());

11. 如何同其它APP通信

回复:可以采用如下方式进行
11.1 APP与APP间使用so库形式分离,所以可以采用传统API调用方式通信;
11.2 采用APP间消息传递方式:
同步消息:
LRESULT InoSendMessage(STRING strAppName, UINT iMsg, WPARAM wParam = NULL, LPARAM lParam = NULL);

异步消息:
INT InoPostMessage(STRING strAppName, UINT iMsg, WPARAM wParam = NULL, LPARAM lParam = NULL);

 消息定义:  
 使用宏定义INO_USERMSG(X)  
 #define MSG_GETID           INO_USERMSG(1)

 使用例程:
 调用方:
 #define INOUPDATE_NAME   "inoupdate"
 #define MSG_GETID        INO_USERMSG(1)
 LRESULT ivalue;   
 ivalue = InoSendMessage(INOUPDATE_NAME, MSG_GETID);

 被调用方:
 注意:
 1. 消息处理必须放在全局Activity的按键处理函数里来处理,不要放到页面的按键处理函数,否则会出现不可预见结果;
 2. 当前使用变量地址时候,不能使用局部变量。
 INT ivalue = 200;
 LRESULT XXXXXXActivity::OnPostKeyEvent(UINT iMsg, WPARAM wParam, LPARAM lParam, DWORD dwTime)
 {
      if (iMsg == MSG_GETID){
           return (LRESULT)&ivalue;
      }
      return ERR_OK;
 }

12. Aiinone支持的图片和颜色格式

回复:图片PNG/.9.PNG/JPG/GIF格式

图片格式 优缺点 使用建议 备注
PNG 无损压缩,图片质量好,占用空间较大,速度快 小尺寸图标使用 32bits
.9.PNG 无损压缩,图片质量好,支持无损拉伸,速度快,类似Android .9图片 背景图使用 32bits
JPG 有损压缩,图片质量较好,占用空间小,速度慢 大尺寸背景图使用
GIF 用作动画简单方便 动画使用

13. 当同时使用列表和画布控件时,调用UserNotifyDataChanged(mpList1)编译异常?

ng_file 回复:请在对应的UserNotifyDataChanged加上对应类限定符号

    IScrollListListener::UserNotifyDataChanged(mpList1);
    ICanvasListener::UserNotifyDataChanged(mpCanvas1);

14. 按钮控件的长按功能未生效

回复:请确认“未生效按键控件”的"长按触发时间"(下图红框部分)值是否>=20?,如没有,请设定此值>=20,此值是以50ms为单位,即最小长按时间要>=1s长按功能才能生效。 button_pic

15. 如何优化UI层刷新效率

回复:

1.可以通过设置层的透明属性来实现,如自己应用有背景图或背景色,无需在应用界面显示壁纸图,此场景下可以将应用层设置为不透明,这样在应用刷新时就无需再重复绘制壁纸,从而达到提升效率效果。

mpActivity->SetLayerStatus(LAYER_FLAG_ATTRIB_TRANSP, FALSE);   //关闭应用层透明效果,再次开启设置参数为"TRUE"即可

2.设置对象的透明属性,如列表使用场景下,需要达成更优的滑动体验,可以将列表对象属性设置为不透明,这样可以减少绘制层数量。

mpXXX1->SetCtrlAttribByBit(CTRL_ATTRIB_OPA);   //设置对象不透明,开启透明清除ClrCtrlAttribByBit(CTRL_ATTRIB_OPA)
Copyright © 2021 深圳合一智联科技有限公司 all right reserved,powered by Gitbook最后修改时间: 2023-07-22 11:05:36

results matching ""

    No results matching ""