怎么提高android画ui速度 csdn

怎么提高android画ui速度 csdn,第1张

1.使用大小适当的图像

在图像方面,许多Android应用开发者采用的是大小单一的做法。尽管这会使资源管理变得更为简单,但就应用的视觉吸引力而言,这是个错误的做法。要让应用呈现出最佳的视觉效果,那么就应当针对具体的设备屏幕设计不同的图像。最适当的图像才能构建出最棒的用户体验。

2.使用适当格式的图像

我们都见过有些应用在尝试加载某些大型图像时会暂停,这不仅仅因为图像的大小存在偏差,而且还因为图像采用了非理想的格式。Android平台支持许多种媒体格式,比如PNG、JPEG、GIF、BMP和WebP(注:仅Android 4.0+版本支持)。PNG是无损图片的理想格式,而JPEG的呈现质量并不稳定。

Android还支持带有Nine-Patch的d性图像。如果可行的话,可以考虑使用WebP来替代JPEG,因为这种格式在存储和下载时效率更高。也就是说,如果将其作为与较老格式同时使用的独立图片,那么应用整体规模会变大,这就削减了使用新格式的优势。

3.运用微妙动画,颜色来呈现状态改变

在屏幕转场时运用微妙动画以及UI控制颜色变化来呈现应用状态改变,这会让你的应用更显专业感。比如,活动间的淡入淡出使屏幕转变更为自然,改变被按动的按键颜色会突显正在发生的用户动作,清晰地呈现出用户正在做的事情。

Android 3.x及随后的版本可开启硬件加速,这会让动画运行更为流畅。但是需要进行测试,因为并非应用的所有功能都能够兼容硬件加速。

4.用圆角效果来软化UI

Button、PageView等用户界面控制按钮在屏幕上都会呈现矩形的像素形状,但这需要进行处理。在控制界面上,使用圆角效果来软化用户界面的外观,这显得很像Web的风格,但确实很受用户喜欢。

5.在3D效果中使用一致性的“光照”

最新版本的Android平台使用全息样式和3D图标等。如果你在应用的控制按键中使用投影和其他此类样式,确保要使用一致性的“光照”。换句话说,要确保阴影在屏幕上的朝向一致。在图像编辑器中使用相同的数值来创造相同的斜度和纹理。

6.使用高对比度配色方案

当某个家庭成员(注:往往是老一辈的人)首次发现可以在邮件中使用带颜色的字体和背景,于是发送给你一封使用白色背景和柠檬黄色字体的电子邮件,这样的邮件阅读起来相当费劲。有些人在设计应用的屏幕时,可能会让玩家难以阅读或导航屏幕中的内容。使用适当的高对比度颜色,会让屏幕更易于查看,缓解眼睛的压力。要将配色方案作为系统资源的一部分,以此为基础来开展其他工作。

7.使用大型和易读的字体

和上述不良配色方案一样,我们也会收到家庭成员发送来带有稿灶某些古怪字体、难以阅读的文字。相比其他字体,有些字体确实阅读起来更为容易。

字体大小也是个重要因素,在保持与其他屏幕功能的平衡性的前提下,尽量将字体制作得够大。就像在使用传真机时,使用小于12磅的字体并不合适。

Android 4.0的设计师推出了一种只适用于该平台的新字体,这种字体在移动设备上的阅读很容易,它被称为Roboto。

8.不要过多偏离平台规范

许多成功的手机应用会使用人们较为熟悉的用户界面。它们有简单且主流的用户界面,其使用的控制方式也是用户所熟悉的。在用户界面控制和屏幕设计中,不要表现得过于另类。尽量简单化,与平台其他应用的表现保持一致。以平台作为决定应用表现和行为的线索。

如果你正在制作的UI与众不同,确保用AB测试等客观方法来比较新UI和传统UI,由此来决定新设计方案是否更优化,比如更有效、更易于使用或者看起来更为舒适。

9.遵从UI指导原则

Android程序说明书中有许多可以整合到应用中的UI指导原则。根据应用所使用的Android版本的不同,这些指导原则往往也有所差异。当出现这种情况时,你需要制作多种资产来应对多种指导铅咐原则。指导原则涵盖了图标、小部件、菜单和活动等部分。

10.测试用户界面

开发者往往不是优秀的QA或测试者。应用可稳定运行后,面向完全不熟悉应用设计和意图的用户开展测试是很有价值的做法。应用设计师往往自认为用户会觉得他们的应用UI很直观,槐敬纯情况或许并非如此。只有真正让用户来测试应用,你才能够在发布应用前发现许

c语言制作UI界面需要相关的UI库

如windows *** 作系统本身就提供了UI的接口

一个简单的示例代码如下

#include <windows.h>

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM)

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR line,int cmd)

{

    static TCHAR AppName[]=TEXT("99")

    HWND hwnd

    MSG msg

    WNDCLASS wndclass

    

    wndclass.style=CS_HREDRAW|CS_VREDRAW

    wndclass.lpfnWndProc=WndProc

    wndclass.cbClsExtra=0

    wndclass.cbWndExtra=0

    wndclass.hInstance=hinstance

    wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION)

  弯碧启  wndclass.hCursor=LoadCursor(NULL,IDC_ARROW)

    wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH)

    wndclass.lpszMenuName=NULL

    wndclass.lpszClassName=AppName

    

    if(!RegisterClass(&wndclass))

    {

        MessageBox(NULL,TEXT("This program requires Windows NT!"),AppName,MB_ICONERROR)

        return 0

    }

    

    hwnd=CreateWindow(AppName,TEXT("九九乘法口诀表"),\

        WS_OVERLAPPEDWINDOW,\

        CW_USEDEFAULT,\

        CW_USEDEFAULT,\

        CW_USEDEFAULT,\

        CW_USEDEFAULT,\

   慧脊     NULL,\

        NULL,\

        hinstance,\

        NULL)

        

    ShowWindow(hwnd,cmd)

    UpdateWindow(hwnd)

    

    while(GetMessage(&msg,NULL,0,0))

    {

        TranslateMessage(&msg)

        DispatchMessage(&msg)

    }

    

    return msg.wParam

}

LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wparam,LPARAM lparam)

{

    HDC hdc

    PAINTSTRUCT ps

    RECT rect

    static x,y

    int i,j

    int len

    TCHAR buf[50]

    TEXTMETRIC tm

    

    switch(message)

    {

        case WM_CREATE:

            hdc=GetDC(hwnd)

            GetTextMetrics(hdc,&tm)

            x=tm.tmAveCharWidth

            y=tm.tmHeight+tm.tmExternalLeading

            ReleaseDC(hwnd,hdc)

            //MessageBox(NULL,TEXT("Create Successed!"),TEXT("Successed"),MB_OK)

            //PlaySound(TEXT("hello.wav"),NULL,SND_FILENAME|SND_ASYNC)

            return 0

            

        case WM_PAINT:

            hdc=BeginPaint(hwnd,&ps)

            GetClientRect(hwnd,&rect)

            //DrawText(hdc,TEXT("Hello World!"),-1,&rect,DT_SINGLELINE|DT_CENTER|DT_VCENTER)

            //TextOut(hdc,rect.right/2-(strlen("Hello World!")/2)*x,rect.bottom/2-y/2,TEXT("Hello World!"),12)

            for(i=1i!=10++i)

            {

                for(j=1j!=i+1++j)

                {

                    len=wsprintf(buf,TEXT("埋如%dx%d=%-4d"),j,i,i*j)

                    TextOut(hdc,j*len*x,i*y,buf,len)

                }

            }

            

            EndPaint(hwnd,&ps)

            return 0

            

        case WM_DESTROY:

            PostQuitMessage(0)

            return 0

    }

    

    return DefWindowProc(hwnd,message,wparam,lparam)

}

上面是一个打印windows下拥有窗口界面的九九乘法口诀表的c语言程序代码

同样的c语言也会有其它的UI库

比如Gtk,Gtk是可移植的UI库

可以使用它在Linux、windows包括mac等等 *** 作系统上做ui程序设计

一个简单的示例代码如下

#include <gtk/gtk.h>

int main(int argc,char **argv)

{

    GtkWidget *win

    GtkWidget *label

    int i,j

    GString *str

    gtk_init(&argc,&argv)

    win=gtk_window_new(GTK_WINDOW_TOPLEVEL)

    gtk_window_set_position(GTK_WINDOW(win),GTK_WIN_POS_CENTER)

    g_signal_connect(G_OBJECT(win),"delete-event",G_CALLBACK(gtk_main_quit),NULL)

    str=g_string_new(NULL)

    for(i=1i <= 9++i)

    {

        for(j=1j != i+1++j)

            g_string_append_printf(str,"%dx%d=%-4d",j,i,i*j)

        g_string_append(str,"\n")

    }

    label=gtk_label_new(str->str)

    gtk_container_add(GTK_CONTAINER(win),label)

    gtk_widget_show_all(win)

    gtk_main()

    g_string_free(str,TRUE)

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12515930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存