杰理-编码器滑动时显示效果,不会直接闪烁
主要实现
![在这里插入图片描述](https://img-blog.csdnimg.cn/0e991aba378f42478eab6ebf3e711510.png)
写了一个公共的onkey,用与所有界面编码器滑动和右侧的滑动条显示
![在这里插入图片描述](https://img-blog.csdnimg.cn/594d8b45278c41b9a9fc5bbadd347fe4.png)
int usr_set_gold_move_rdec(struct ui_grid * grid,u8 rdec_index)
{
struct rect rect_start;
struct rect rect_end;
int start_diff_y=0, end_diff_y = 0;
if(rdec_index){
ui_core_get_element_abs_rect(&grid->item[(grid -> hi_index)].elm , &rect_start);
if(grid -> hi_index < (grid->avail_item_num-1)){grid -> hi_index++;}
ui_core_get_element_abs_rect(&grid->item[(grid -> hi_index)].elm , &rect_end);
start_diff_y = 0-rect_start.top;
end_diff_y = 0 - rect_end.top;
for(;start_diff_y>end_diff_y;start_diff_y-=25)
{
ui_grid_slide(grid , SCROLL_DIRECTION_UD , 25);
}
}else{
ui_core_get_element_abs_rect(&grid->item[(grid -> hi_index)].elm , &rect_start);
if(grid -> hi_index > 0){grid -> hi_index--;}
ui_core_get_element_abs_rect(&grid->item[(grid -> hi_index)].elm , &rect_end);
start_diff_y = 0-rect_start.top;
end_diff_y = 0 - rect_end.top;
if(start_diff_y == end_diff_y)
{
ui_grid_slide(grid , SCROLL_DIRECTION_UD , -25);
return true;
}
for(;start_diff_y<end_diff_y;start_diff_y+=25)
{
ui_grid_slide(grid , SCROLL_DIRECTION_UD , -25);
}
}
return false;
};