这是一系列介绍 Android 脑残特性的文章。Android 是一个满载先进科技的系统,同时也是一个充满碎片化、设计缺陷和执行缺陷的缺陷系统。
本篇文章针对 Android 对于状态栏的处理。
这是一系列介绍 Android 脑残特性的文章。Android 是一个满载先进科技的系统,同时也是一个充满碎片化、设计缺陷和执行缺陷的缺陷系统。
本篇文章针对 Android 对于状态栏的处理。
前几天舍友问到我这个问题,说从网上也搜索过,很多人在问但是没人有人回答,我就来简单地回答一下。其实原理很简单,看完应该都会笑的。
});
这种东西应该出现在类似这种场景中:
Thread thread = new Thread(new Runnable() { @Override public void run() { System.out.println("Whatever"); } });
这里最后一行就出现了 });
字样。
应某医院副院长要求,开发一个数据库类程序,方便管理单位的医疗设备。需求如下:
规划阶段决定采用WPF技术来开发程序,即:用XAML实现表层UI,用C#实现程序功能。WPF的优点是UI设计和核心设计可以分离,并且WPF窗口完美支持Windows的DPI缩放,传统的Windows Forms窗口会在高分辨率屏幕上变得模糊,不方便日后升级设备。
数据库核心决定采用轻量级SQLite数据库,避免SQL Server动辄GB级的安装体积,并且支持数据级加密。(我见过一个国营企业,使用SQL Server来实现一个很简单的数据库操作。应用入口设置了口令验证,但是数据库明文储存,因此只要用SQL Server提供的数据库浏览器打开数据库文件即可浏览所有条目——里面条目的命名居然是用汉语拼音)。
开发时采用 .Net Framework 4.5 框架,该框架在Windows 8及以上系统被系统内置,Windows Vista及以上可以通过独立安装实现,不支持Windows XP以及更低版本操作系统。应用程序为32位,保证最大兼容性,日后可开发64位版本。
由于该程序的性质更像是“企业应用”,简单明晰即可,不需要花哨的动画和过度,因此UI设计以简单清晰为原则,字体足够大,,保证远距离操作依然有足够的可见性。至于美观度……再好的东西看多了也会腻,所以为什么要在这上面费心思?
UI设计原则:
WPF架构允许用XAML先行设计程序UI,并且对UI的布局、控件的属性和控件事件进行声明。这种思路后来也被Android所借鉴(用XML先行设计UI,再通过Java类来实现功能)
由于“添加”功能是最常用的功能,“添加”按钮一定要能非常容易点到——处理方法简单粗暴,右侧一个长长的竖条就是“添加”按钮。在程序全屏运行时,将鼠标指针甩到右侧边缘即可点按,甚至不需要看到鼠标指针在哪。
因为电脑放在办公桌上,经常需要离电脑很远来查看信息,所以字体必须保证够大,以保证远距离可见性。
搜索功能被简化为一个又长又大又宽的文本框(TextBox),借鉴Google的Instant Search理念,不需要提前选择匹配项,随着文字的输入,下方的列表视图(ListBox)会自动更新搜索到的条目。
底层设计原则:
采用SQLite轻量级数据库核心,安装文件仅10MB左右。相比SQL Server动辄GB级的体量轻巧很多。
数据库文件本身必须加密,不能留下“程序入口需要验证,而数据库本身明文存储”这种低级错误。数据库的密码以HardCode写进程序本身(将来会加入验证入口),密码格式为GUID,无法猜测,暴力破解的难度极高。
数据库中每一个条目都对应一个GUID,这也是程序内部识别条目的唯一方式。.Net Frameworks提供了一行代码生成GUID的方法,可谓“前人栽树、后人乘凉”:
System.Guid guid = new System.Guid();
将Guid显式转换为字符串便可以直接使用。
由于客户希望数据库文件移动储存(放在U盘或者移动硬盘内),而这种储存介质又极易因为外部环境而损坏,客户又要求不要云同步,因此,数据库的备份工作要尽量完善。每一次对数据库进行修改之后,在关闭程序时,都会保存一份数据库的副本备份。
private void Backup(object sender, System.ComponentModel.CancelEventArgs e) { if (dataProcessed != 0) { File.Copy("mspr.db", "mspr.backup", true); } }
未来改进方向:
源代码:
2014年7月15号,Adobe联合Google发布针对亚洲文字开发的新一代无衬线开源字体:思源黑体。该字体被Adobe归到Source Sans字体家族免费提供给所有Typekit用户,并在其官方博客上给出了GitHub源代码和独立下载源;Google将思源黑体归到Noto pan-Unicode字体家族中,取名为Noto Sans CJK,这一套字体也强有力地扩充了Noto的宽容度,让“No Tofu”的愿景向前迈了一大步。
思源黑体 这一字体家族有七种字体粗细,完全支持日文、韩文、繁体中文和简体中文,这些全部都包含在一种字体中。它还包括来自我们颇受欢迎的 Source Sans字体家族的拉丁文、希腊文和西里尔文字形。总的来说,字体家族里的每种字体粗细总共有 65,535个字形(OpenType 格式支持的最大上限),而整个字体家族的字形个数接近50万。这个字体家族是通过开源方式提供的,数量、开发规模和价值之大堪称史上之最,这使它成为需要支持多种语言的字体的设计人员、开发人员和普通用户的零成本解决方案。
该字体设计之初的原则便是兼容以中文为源的亚洲文字,兼顾印刷效果和点阵屏幕显示效果。该字体史无前例地为各国字体提供了7个级别的字重(参考标题图),不但让纸质印刷品有了更细腻的排版选择,也让网页设计有了更丰富的效果。因此我强烈推荐用户安装该字体,也希望该字体被纳入下一代主流操作系统作为候选。
思源黑体包括四个语言:简体中文、繁体中文、日文和韩文。这四个语言的共同根源为繁体中文,拥有大量共通字符。但是随着时间的推进和文化的演进,同一字符在各国的书写方式中产生了不同的变体。思源黑体很好地解决了变体问题,在提供最大兼容的同时,显示各国文字时都能显得舒服。
Adobe Typekit任何级别的订户(包括免费的“Trial”级别)都可以将思源黑体添加到自己的字体库中并与所有的PC/Mac进行同步。
Source Han Sans字体单独下载链接(via SourceForge):简体中文|繁体中文|日文|韩文|全语言OTC|全语言OTF
Noto字体官方网站:Google Noto Fonts(墙外)
Noto Sans CJK字体单独下载链接(Google Project Hosting):全语言(墙外)
Noto完整字体家族下载链接(百度云):全语言
注:如果仅需要一种语言的思源黑体则建议单独下载;OTC包含四种独立字体,需要各自独立安装;OTF将所有字体集成在一个文件内,但是需要软件来声明具体所用到的语言,若未声明,则默认使用日文字形。个人并不推荐下载OTF格式字体,实测在Windows 8.1 Update 2和OS X 10.9上都出现了兼容性问题。
注2:Noto Sans CJK版本或Source Han Sans版本的两中思源黑体没有任何区别,包括其英文部分。二者在系统中显示的名称为各自的英文名称,而不是“思源黑体”,这会造成一定兼容性问题。例如一方在Word文件中定义字体为“Noto Sans CJK”的思源黑体,而在另一方的电脑里只安装了“Source Han Sans”的版本,那么程序依然会以找不到字体为由回滚对应内容到宋体。
如何评价这个字体?
思源黑体和苹果苹方极其相似,比微软雅黑字面更小,分辨率高时更好看。要说包容性,微软雅黑也支持中日韩三国文字,只是没有7种级别的粗细。在非Retina屏幕上,微软雅黑的观感最好;在Retina屏幕上,微软雅黑会过于厚重,苹果丽黑效果会更清秀美观。
不过既然免费了,也就不要要求太多了。