在图像方面,许多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
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)