`
xusaomaiss
  • 浏览: 615474 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

河北积分消费做完后小结

阅读更多

       原来一直是在写台,前台UI操作比较少,这次很多工作是在前台UI的操作,做为底端MTK的行业应用,UI的使用也比较简单,主要是使用列表的category,单行输入框。比较常用的是以下

 

ShowCategory151Screen:这个我用于显示平台返回的数据内容

ShowCategory171Screen:有带标题的单行输入框

ShowCategory174Screen:用于做菜单列表

 

       总结:在做界面时,一定要把菜单流程或说界面流程理清楚来,我在做完后使用freemind把结构图画出来了。如下:

关于在写程序时,要注意的是,在写界面操作时命名为:

Entry_XXX_Screen 还有一个是Entry_XXX_ScreenPre,还有就是XXXX_LeftOk,XXXX_RigthOK

在进入一个界面时,要写Pre的进入界面前的预处理,特别是输入框的界面,因为有关返回时,一些数值要保存,history_buffer一定要处理要,在MTK中很多要使用全局变量的,全局变量的初始化,清空操作放在Pre中,这样返回时才不会出错。

 

 

//全局变量定义区
char g_szInputBuffer[MAX_INPUT_LEN]={0};
char g_szTitleBuffer[MAX_TITLE_LEN]={0};
//函数定义区
void Entry_XXX_Input_Screen(void);
void Entry_XXX_Input_Screen(void);


void Entry_Account_Secrect_Input_Screen_pre(void)
{
	
//其它操作	
	memset(g_szInputBuffer, 0x00, sizeof(g_szInputBuffer));
	

	Entry_XXX_Input_Screen();

}

//
void Entry_XXX_Input_Screen(void)
{
	U8 *guiBufferPointer;	

	TextToUC2StrEx(g_szTitleBuffer, (U8 *)"输入框");
	
	//注意这里把界面添加到历史了
	EntryNewScreen(SCRN_ID_XXX_SECRET_INPUT, NULL, Entry_XXX_Input_Screen, NULL);

	entry_full_screen();
	clear_screen(); 
	

	guiBufferPointer = GetCurrGuiBuffer(SCRN_ID_XXX_SECRET_INPUT);
	
	ShowCategory171Screen(
		(PU8) GetString(STR_GLOBAL_OK),
		(PU8) GetImage(IMG_GLOBAL_OK),
		(PU8) GetString(STR_GLOBAL_BACK),
		(PU8) GetImage(IMG_GLOBAL_BACK),
		g_szTitleBuffer,
		NULL,
		INPUT_TYPE_SAT_NUMERIC_PASSWORD,
		g_szInputBuffer,
		XXX_LEN,
		guiBufferPointer);
	
	SetLeftSoftkeyFunction(Entry_Account_Trans_Show_Screen_pre, KEY_EVENT_UP);
	SetCategory171RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);

}
 

      只有规化好输入框的流程的,还有每个输入框的值操作,这样在使用中就不会出现返回时各种异常情况的发生。关于返回时除了返回一级外,还可以返回多级,在写代码前,想清楚,画出来,这样菜单操作时就不会乱了。这是这次项目的经验。

      在界面操作上,我碰到了,返回时数据是为空,把数据记数值没有清空,还有菜单层级跳错,因为是gobackhistory,不是自己操作,而是使用MTK的历史机制,所以有些问题很怪。

 

      还有一点记录一下:mtk中的列表很多最大是不超过90个,所以要使用短信或电话本中的列表菜单那样,

static pBOOL  ps_fail_list_get_item(S32 item_index, UI_string_type str_buff, PU8 *img_buff_p, U8 str_img_mask)
{									
	
    UCS2Strcpy((S8*) str_buff, (S8*)g_szDetailMenuList[item_index]);

	*img_buff_p = NULL;//get_image(IMG_MESSAGE_UNREAD);

	return TRUE;


}


for(i=0;i<100i++)
	{
			
		sprintf(g_szDetailMenuList[i],"%s",i);
	}


ShowCategory184Screen(
        STR_PAYSUM_LIST,
        0,
        STR_GLOBAL_OK,
        0,
        STR_GLOBAL_BACK,
        0,
        i,
        ps_fail_list_get_item,
        0,
        0,
        guiBufferPointer);
 


      使用这个列表,它的本质是分块加载列表,我跟了一下代码是32个,这样大数据时也会不太慢。

 

 

      这次还把自己写的代码改了一个地方,是让打印能支持回调,这样要打印的数据再大也可以打印出来,每次打印1K的数据。

 

 

 

        随便说一下,在河北的,如果在一些麦当劳或一些消费场所,可以使用积分换物品,那商户使用的设备中的程序是我写的,哈哈。如果在福州能看到自己做的东西在使用,那是一件很开心的事。

 

        这次外面使用完后,反馈在连续操作后终端会死机,查看log原来是MTK的历史超过30个,自己在做的过程想到这个问题,当时使用的函数是DeleteScreenIfPresent,但这个函数是删除历史列表其中一个历史,应该使用

GoBackToHistory,这个函数在返回指定ID的历史,同时也会把这段区间中的历史清掉。

        关于历史的初始化函数是DinitHistory。

 

 

  • 大小: 46.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics