Android用记事本程序 Techo Lite 版本升级 1.2.0

昨晚对Techo Lite进行了一次小型的改进,说明如下:

Techo Lite是一款以快速启动和功能精简为特色的Android用记事本软件。编写的初衷是为了能有一个只需一次按键就能立即开始文字输入且不必考虑保存、打开等问题的便筏。

关于之前版本的相关信息,请参见当时的发布日志

这次的1.2.0升级除了一些细节问题的修正外,主要提供了两项新功能。其一是文本文件导出功能,可以将当前记录内容以.txt格式保存于SD卡,在一定程度上解决了Techo Lite泛用性较低的不足。另一功能为“撤销清除”功能,可以恢复最近一次的“清除”当前内容的操作,其用意是解决误操作。

今后计划改进的方面为对平板电脑的优化,这将在入手Tablet S之后着手进行。同时正在考虑是否需要为其加入导入功能。同时全功能版的记事本Techo也正在设计中,或许那才是真正的终点。

Android Market页面:

https://market.android.com/details?id=org.breezesoft.techolite

一些新版的程序截图:

索尼(SONY)平板电脑Tablet S消息汇总

距离Tablet S的发售日9月17日已经越来越近了。目前还看不到将有大陆行货发售的迹象,于是便决定购买日版。前几天在网上进行了Tablet S的购入宣言(索尼的一项促销活动,提前确认购买平板及相关配件的话能获得最高3000日元的折扣)和实际商品的预定。准备购买的是Wifi 16GB版本的Tablet S及其底座

现在在此对发售之前所收集到的一些消息进行整理。消息的来源有瘾科技中文版的文章和日文博客「とあるソニー好きなエンジニアの日記」的文章和日文博客「ソニーが基本的に好き。」的文章等。文章中都对Tablet S进行了一番简单的试用。由于一些众所周知的原因,以及语言问题,自己对内容进行了翻译整理后概括如下:

  • 启动速度比预想的略慢一些,不过启动后整体的流畅程度令人满意。
  • 外壳的塑料感比较强(虽然本来就是塑料…)。但是采用了日本本土发售的VAIO G系列(以轻量坚固为卖点)中所使用的材料技术,强度上不存在问题。
  • 非对称的设计使得把持感非常好,完全感觉不到有598g的重量。这是独特的外形设计使得力矩比较短的缘故,如此一来长时间单手把持也不容易疲劳。
  • 双手把持时由于机身较长而打字不太方便。如果竖直持机则会由于非对称设计而左右手感觉不太协调。不过放在桌上时由于有一个倾角而有着不错的打字体验。
  • 虽然够轻,但不够薄。
  • 背面的磨砂设计不会留下指纹,也不容易出现打滑情况。
  • 使用了TruBlack技术的IPS液晶屏幕显示效果优异,可视角度很广,反光现象也被控制得非常好,可以说是明显优于现时期同类液晶屏幕。TruBlack是索尼最近采用的液晶屏制造工艺,在索尼爱立信的新型号手机、Cyber-shot数码相机等产品中也有使用。它减少了反光,增加了显示的黑度。
  • 屏幕没有采用Gorilla玻璃材质,较容易留下细纹。不过索尼表示可以抵御一般的刮擦,实在介意细纹的话还可以通过贴膜解决问题。背面也比较容易留下细纹。
  • 由于索尼对Tablet S所使用的Android系统进行了增强,采用了所谓「サクサク技術」对反应速度进行优化,因而使Tablet S有了不同于以往Android平板的系统流畅度,即使和使用了iOS的iPad/iPad2也不相上下。该优化的具体原理似乎是预先推测用户之后可能进行的操作从而进行预读。
  • 对触摸屏进行了一道特殊的加工工序,去除了CPU引起的干扰,使得触摸体验得到提升。
  • 应用程序的排序和管理十分便捷。
  • 索尼自主的键盘设计非常易用(应该是针对英语、日语和网址输入等设计的,中文的使用效果还不清楚)。
  • 浏览器也采用了预读技术,因而比起同规格的Android平板可以更加快速的显示网页内容。
  • 不能直接播放SD卡的内容。SD卡里的媒体文件必须移动到机身内存才能播放。因此16GB版和32GB版的容量差别可说无法通过SD卡来弥补。(猜测是为了保证系统流畅性?或是别的商业利益原因……)
  • 性能方面播放高清视频绰绰有余,网页Flash内容也能轻松胜任。
  • 电池续航能力方面,在启动Wifi并连续播放影片的情况下可以坚持8.5小时。尽管和iPad2或是Galaxy Tab 10.1等10小时级别的平板相比还有差距,但平均来看已属上乘。
  • 使用了Exmor for Mobile技术的500万像素摄像头效果在同类中表现优秀。

以上就是目前大致可以了解到的情况。整体看来Tablet S虽然不算完美,但是不少细节确实是经过了用心设计的。我并不认为索尼可以靠Tablet S一机占领市场,也担心还有不少目前没能发现的缺点,或许和使用了iOS的iPad2,和有相当经验的Galaxy Tab还有一定差距,但它有其独到的特色。特别是各种索尼自有服务的整合可说是匹敌苹果强有力的一招。不过最终的使用体验如何,还得等待最终的成品。我也会在收到Tablet S之后尽快作使用测评的。

索尼(SONY)展出平板设备Tablet系列、新型电子书阅读器,发表Xperia arc S等

在当地时间8月31日于德国柏林举办的世界最大规模消费电子展会IFA2011上索尼(SONY)一口气展出、公布了大量新产品。

首先是备受瞩目的索尼平板设备,Tablet S与Tablet P。

Sony Tablet是搭载了Android 3.2(Tablet S在发售时暂时搭载3.1版本)的平板电脑,以流畅的操作感和丰富的网络应用为卖点。平板型的Tablet S将于9月17日发售Wifi版的16GB/32GB两种型号,而在10月或11月则将发售折叠型的Tablet P的3G+Wifi版以及3G+Wifi的16GB版Tablet S。

Tablet S搭载了一块9.4英寸的触摸屏,重量约598g,采用了NVIDIA® Tegra™ 2 处理器。Tablet P则是上下两块5.5英寸的屏幕,折叠后尺寸约180mm × 26mm × 79mm,重372g。

Tablet S采用了特别的人体工学设计,使得长期把持也不容易感到疲劳。Tablet P则是由双屏设计而提供了更多可能性。两者均内置了大量的索尼自制软件以提升易用性,以及Video Unlimited、PlayStation Certified、Reader Store、Personal Space by Sony等索尼提供的娱乐/便利服务。系统上索尼对虚拟键盘等各个细节做了针对性的优化以优化使用体验。

两者均提供了包括外接蓝牙无线键盘在内的种类丰富的配件,其中Tablet S还支持支架。

Tablet S的Wifi 16GB版售价约45000日元(折合人民币约3750元),32GB版约53000日元(折合人民币约4400元)。

Sony Tablet目前还没有任何国内行货的消息,自己是已经决定通过网络入手了。

Sony Tablet官方新闻稿见这里(日文)。

与Sony Tablet同时发布消息的还有新型号的电子书阅读器PRS-T1。这款产品在前几天就已经流出了不少消息,而在IFA2011上终于正式发表。

与早先型号的PRS-650/350相比,PRS-T1增加了Wifi支持(可不经由电脑购买书籍)、多点触摸屏幕(支持缩放等功能)、多语言词典以及Wikipedia/Google便捷搜索等功能。屏幕则依然是6英寸的E-ink屏。

与此同时索尼还宣布将在欧洲国家展开Reader Store电子书商店服务,英国将在今年10月末开始,德国与奥地利在今年末,法意西则预计明年春季开始。英国首发就将能够提供10万册书籍。

新型Reader电子书阅读器PRS-T1的官方新闻稿见这里(日文)。

手机方面则是发表了今年大受好评的Xperia arc的改良版Xperia arc S已经使用了Walkman商标的Android手机。

相比前代产品Xperia arc,Xperia arc S搭载了一颗1.4GHz的处理器(基于高通MSM8255 platform平台的512 MB RAM及1.4 GHz Snapdragon处理器,配合Adreno 205 GPU),能提供高出Xperia arc约25%的处理性能。系统则是将于上市时使用Android 2.3.4,和其他2.3.4机型一样,Xperia arc S将具备3D全景拍摄功能等新特性。

其他方面Xperia arc S则基本与前辈相当。4.2英寸的16M发色数FWVGA分辨率屏幕,Reality Display with Mobile BRAVIA® Engine保证的显示效果优化,Exmor R™ for mobile提供的优异拍摄效果等。

色彩方面Xperia arc S提供了纯白、午夜蓝、神秘银、钢琴黑以及樱粉五种色彩,相信能满足更多人的喜好。

预计2011年第四季度全球发售。

Xperia arc S的官方新闻稿见这里(英文)。

Xperia arc S的产品页面见这里(英文)。

至于另一部Android系统的Walkman手机则还没有太多的消息,不过似乎依然只是中端型号。将继续对其进行关注。

最后是昨天闪电发表的头戴式3D显示器HMZ-T1。

这是世界上第一台民用头戴显示设备。采用了两块1280×720分辨率的OLED屏幕,支持3D立体影像。OLED则提供了高对比度、优秀色彩表现以及快速响应能力。左右双屏幕提供了区别于以往的FS或LBL式3D原理的更为自然舒适的3D效果。此外它还具有5.1声道环绕声输出,提供了上佳音质水平。

该头戴式显示器为有线式,需要连接外置机盒,重量约420g。

HMZ-T1预计售价约60000日元(折合人民币约5000元),将于今年11月11日发售。目前没有行货的消息。

官方新闻稿见这里(日文)。

产品页面和效果演示视频见这里(日文)。

文章中所有图片版权属于Sony Corporation

夏の夢

搭建博客之初就是想写些自己的随感之类,却迟迟没时间动笔。想不到这个主题的第一篇文章竟是关于画的。

“画些什么”这样的想法大概是今年四五月份的时候产生的。当初是觉得该做些什么来纪念自己已经经历的二十年,或者说迎接新的将来的人生。好像也没有条件做什么波澜壮阔的大事,那就画画吧。在暑假的项目完成后利用假期的尾巴终于画完了它。无论质量如何,是完成了。

在有了这个想法之后,考虑了一阵,决定以“梦”为主题展开。构思了几种内容,都觉得不是最合适。这时正好重温秒五,再次为某个画面所触,便打算以此为基础构图,命名为“なつのゆめ”,夏之梦。为了自己的梦想努力至深夜趴在书桌上进入梦乡的主人公。

准备工作就绪后就正式开始了绘画的过程。首先用纸笔作了草图确定大致的效果,接下来开始电脑上的工作。自己也没有什么专门的绘画工具,平时也很少使用鼠标,于是笔电的触摸板是唯一顺手的设备。所有的线条都是用直线/曲线工具完成,文字部分是使用文本工具,纸张上的内容则借助了扫描获得后进行处理。作为第一次的尝试,色彩和光影部分比较难以把握,因此也借鉴了不少他人的经验。透视、投影和构图上纰漏也很多,这些已经是我力所不能及的了。本来就是某种意义上的自娱自乐,放弃一些细节为好。

笔电、自动铅笔和中性笔以及手机是画的过程中印象比较深的部分。因为完全没有可以参照的对象,所以只能自己慢慢照着实物边改边画,所幸最终的效果似乎还过得去。申明一下,画中出现的商标分别属于其各自商标所有人(笑)。

好了,话题回到“梦”本身。在这一年里自己想了很多的事,篇幅所限,也并不打算在此熬述。日记和邮件会永久地保留着自己的这些思绪的吧。所有思考的核心其实只有一个,“为了谁,为了什么而努力”。以前常说自己只要觉得有努力的意义,就能尽全力去做。可这所谓的意义又是什么?

我想我知道,只是还不那么确定。不过即便如此,人生中充满了喜悦的、悲伤的事,充满了令人激动的挑战、使人不振的打击,有幸福的邂逅,也有依依的别离。我知道前进的方向,只是尚未到达彼端。但没关系,“希望があるから”。我也许有时想得太多,常常被人这么说道。但也没关系,这就是我,我只是会去观察常人易于忽略的部分而已。

正巧就在今天日本语能力测试公布了成绩,总算以一个还行的成绩通过了N1,作为一种对自己付出的肯定。有很多事我也许是一辈子无法做到的,不过我清楚更多的事情是我自己可以把握的。这个世界有着这样的法则,当举起了棒子的一端,另一端也将自然随之被举起。

最后要感谢在我的人生前二十年中出现过的所有人,你们不是过客,而是我的生命的组成部分。特别是最近这五六年,将成为我人生永久的难忘经历。感谢我的父母给了我足够自由的空间。感谢Chaim和Harry等朋友的支持。特别感谢Harry的父亲最后对“夏の夢”提出的一些修改建议。

加油 ^ ^

 

君ならできる。

构造自定义组件

Android提供了一种高级而强大的自定义模型来构建UI,这一模型基于布局类View和ViewGroup来实现。首先,Android平台包含了一系列的预构建View和ViewGroup子类——被称为控件(widget)和布局(layout)——用以构造UI。

可用的控件包括但不限于Button、TextView、EditText、ListView、CheckBox、RadioButton、Gallery、Spinner及一些特殊用途的AutoCompleteTextView、ImageSwitcher和TextSwitecher。

可用的布局包括LinearLayout、FrameLayout、RelativeLayout等。范例请参见“常见布局对象”。

如果预构建的控件或布局无法满足需要,可以创建自有的View子类。如果只是要对现有的控件或布局作小调整,可以继承该控件或布局并覆盖其方法。

通过创建自有的View子类,将可以对于屏幕元素的外观和功能进行精确控制。要了解能够对自定义视图进行哪些控制,可以参考下面的例子:

  • 可以创建一个完全自定义渲染的View类型,例如使用2D图像渲染的有些类似于模拟电路控制的“音量控制”按键。(自己也不太清楚analog electronic control是什么,总之这个例子是说可以自定义按键的外观)
  • 可以将一组View组件结合为一个新的单独的组件,比如类似于ComboBox(一种弹出式列表和文本输入栏的结合体)的东西,或是双栏选择器(一种有左右两栏的列表,可以重新分配其中的某个项目应该属于哪一栏),等等。
  • 可以覆盖EditText组件在屏幕上的渲染方式(Notepad教程中通过这种方式创建了具有划线的记事本页面,取得了良好效果)
  • 可以捕捉例如按键等的其他事件并以自定义方式处理它们(例如在游戏中)。

下面的小节阐述了如何创建自定义View并将其用于程序之中。更为详细的参考信息,请参见View类。

基本方式

这里是对要创建自有View组件所需了解的内容的一个高度预览:

  •  用自有类继承一个View类或其子类。
  • 覆盖其中的一些方法。需要覆盖的是那些父类中以“on”开头的方法,例如,onDraw(),onMeasure()和onKeyDown()。这和在Activity或是ListActivity中覆盖那些和生命周期与功能相关on…事件相类似。
  • 使用该新类。一旦完成,自有的新类可以被用于其父类能被用于的地方。

 提示:继承的类可以在使用它们的活动中被定义。这样就限制了对其不必要的使用,很有用(因为可能会为了更广泛的用途而需要在程序中创建另一个新的公用View)。

 完全自定义的组件

完全自定义的组件可以被用来创建任何希望呈现的图形组件。也许是一个看起来像是老式类比指示条的音量指示器,或是卡拉OK机上唱歌时会有一个随着歌曲的进度弹跳着的小球的一长条的文本视图。总之,有时无论怎样组合预置组件也无法达到某种效果,因而需要另外的自定义组件。

幸运地,可以轻松地创建具有所希望的外观和行为的组件,仅有的限制只是想象力,屏幕尺寸,可用的处理器能力(要记得最终程序不得不运行于比桌面工作站性能弱很多的设备上)。

要创建一个完全自定义的组件:

  1. 也许有些出乎意料,通常要继承的视图正是View,因此创建新的组件往往以继承View类开始。
  2. 可以提供一个构造函数以从XML中获取属性和参数,也可以自己定义这些属性和参数(比如音量指示器的色彩和范围,指针的宽度和阻尼等。)
  3. 有可能需要为该组件创建自有的事件监听器,属性继承器和修改器,或是其他更为深入的功能。
  4. 通常都需要覆盖onMeasure()方法,如果希望组件显示内容,常常onDraw()方法也要覆盖。这两者都具有其默认行为,默认来说onDraw()什么也不做,而onMeasure()则总是设置尺寸为100×100——这可能不是所希望的属性。
  5. 如有需要其他的on…方法也应该被覆盖。

 继承onDraw()和onMeasure()

onDraw()方法将传递一个Canvas,在该Canvas上可以实现任何所需内容:2D图形、其他自定义组件、个性化的文本内容或其他所能想到的。

注意:这并不适用于3D图形。如果希望使用3D图形,必须继承SurfaceView而不是View,并在另一个线程中绘制。参见GLSurfaceViewActivity范例以了解更多。

onMeasure()则稍微复杂一些。onMeasure()是组件与其容器之间的一种渲染约束。它应该被覆盖以高效而准确地报告其所包含内容的尺寸度量。由于其父级(它被传递给onMeasure()方法)限制的要求,又由于一旦完成计算后需要以测量的宽度和高度来调用setMeasuredDimension(),整件事变得有些复杂。如果没能通过一个被覆盖的onMeasure()方法来调用它的话,结果将会是在测量时抛出一个例外。

从整体上来看,实现onMeasure()大致是这样的:

  1. 被覆盖的onMeasure()方法被以宽度和高度的测量值(即widthMeasureSpec以及heightMeasureSpec参数,它们都是用来表示维度的整型值)调用,这是对于要处理的宽度和高度的测量值的一种限制。这些参数能够要求的所有限制的参考资料请见View.onMeasure(int, int)相关的文档(该参考文档同时很好的解释了整个测量操作)。
  2. 组件的onMeasure()方法应当计算出渲染该组件所需的宽度和高度的测量值。它通常应当和传入的参数相匹配,不过有时也可以选择扩大(这时,父类可以根据不同的测量值选择包括切割、滚动、抛出例外或请求onMeasure()重试等一系列操作。)
  3. 一旦宽度和高度被计算出来,就必须以它们去调用setMeasuredDimension(int width, int height)。否则将导致抛出例外。

下面是关于视图的框架可能调用的其他标准方法的一些总结:

类别 方法 描述
创建 构造函数 在通过代码创建视图时和在视图通过布局文件生成时都会需要一些构造函数。第二种情况下布局文件中定义的任何属性都需要被读取并应用。
onFinishInflate() 当一个视图及其所有子视图都通过XML生成后被调用。
布局 onMeasure(int, int) 调用以决定该视图及其所有子视图所需的尺寸。
onLayout(boolean, int, int, int, int) 当该视图需要指定其所有子视图的尺寸和位置时被调用。
onSizeChanged(int, int, int, int) 当该视图的尺寸发生变化时被调用。
绘制 onDraw(Canvas) 当该视图需要渲染其内容时被调用。
事件处理 onKeyDown(int, KeyEvent) 当一个新的按键事件发生时被调用。
onKeyUp(int, KeyEvent) 当一个按键释放事件发生时被调用。
onTrackballEvent(MotionEvent) 当一个轨迹球移动事件发生时被调用。
onTouchEvent(MotionEvent) 当一个触摸屏动作事件发生时被调用。
焦点 onFocusChanged(boolean, int, Rect) 当视图获得或是失去焦点时被调用。
onWindowFocusChanged(boolean) 当包含了该视图的窗口获得或是失去焦点时被调用。
关联(Attaching) onAttachedToWindow() 当该视图与一个窗口相关联后被调用。
onDetachedFromWindow() 当该视图与窗口接触关联后被调用。
onWindowVisibilityChanged(int) 当包含了该视图的窗口的可见性发生改变时被调用。

 一个自定义视图的范例

在API Demos中的CustomView范例提供了一个自定义View的范例。该自定义View被定义在LabelView类中。

这个LabelView范例对自定义组件的各方面进行了演示:

  • 继承View类来创建一个完全自定义的组件。
  • 支持参数并可以接受视图生成参数(在XML中定义的参数)的构造函数。其中一些参数将被传递至父类View,不过更重要的是,一部分参数将被用于在LabelView中定义的属性。
  • 一些该标签组件所需的标准公有方法,比如setText()setTextSize()setTextColor()等等。
  • 被覆盖的onMeasure()方法以决定并设置组件的渲染尺寸。(注意在LabelView中,实际的工作是由私有的measureWidth()方法完成的。)
  • 被覆盖的onDraw()方法以将标签绘制于所提供的画布(canvas)上。

可以在范例中的custom_view_1.xml里看到一些LaberView自定义视图的用例。通常,可以看到android: namespace参数和自定义的app: namespace参数被混合使用。app: parameters是LabelView进行组织并使用的参数,被定义于该范例的R资源定义类中的风格化内部类中。

复合控制器(Compound Control)

如果不想创建一个完全自定义的组件,而是希望将一些可重用的组件组合在一起以获得一组已存在的控制功能的话,就创建一个复合组件(或称为复合控制器)吧。简言之,就是将一些更为基本的控制器(或是视图)装入一个逻辑组使之被看作为是一个单独的组件。例如,一个Combo Box可以被认为是一条单独的EditText域加上一个具有弹出式列表(PopupList)的调节按钮。如果按下按钮并从列表中进行选择,就会弹出一条EditText域,当然用户也可以直接在EditText中键入一些内容。

在Android中,其实已经有两种View可以做到这点了:Spinner和AutoCompleteTextView,不过Combo Box的概念还是可以用来做为一个简单易懂的范例的。

要创建一个复合组件:

  1. 这通常是从某种类型的Layout开始,所以需要创建一个继承了某种Layout的类。在Combo box的例子中或许应该使用一个水平方向的LinearLayout。请记得其他的布局是可以嵌套于其中的,所以复合组件可以做得相当地结构复杂。需要注意的是还可以像Activity所使用的那种方式一样通过声明式(基于XML)的方式来创建所包含的组件,或是在代码中对其进行嵌套。
  2. 在新类的构造函数中,获取父类所需的所有参数,并首先将其传递给父类的构造函数。之后可以设置其他在新的组件中所要使用的视图;在这里将创建EditText域和PopupList。请注意可能还需要向XML引入一些自有属性和参数用以被提取并使用于构造函数。
  3. 还可以为所包含的视图可能会触发的事件创建监听器,例如,一个当进行了列表选择后对EditText的内容进行更新的列表项目点击监听器(List Item Click Listener)的监听器方法。
  4. 还可以通过访问器(accessor)和修改器(modifier)创建自有的属性,例如,允许EditText的值在组件中被初始化并在需要时可以查询获取其内容。
  5. 在继承一个Layout时,不必覆盖其onDraw()onMeasure()方法,因为该布局的默认行为就能很好的实现效果。不过,如有需要还是可以对其进行覆盖。
  6. 可以覆盖其他的on…方法,例如onKeyDown(),用于某个键被按下时从一个combo box的弹出列表中选择某一个默认值。

总之,使用Layout作为自定义控制器的基础将带来一系列的好处,包括:

  • 可以通过和活动一样的声明式的XML文件来指定布局,或是可以在代码中创建视图并将其嵌入布局中。
  • onDraw()onMeasure() 方法(加上大部分其他的on…方法)的默认行为能正常工作因而不必进行覆盖。
  • 最后,可以很快捷地构建非常复杂的复合视图并重复利用它们。

复合控制器的范例

在SDK附带的API Demos项目中,有两个List范例——Views/Lists下的范例4和范例6演示了一个继承了LinearLayout的SpeechView,它构建了一个显示Speech引用的组件。范例代码中所用的相关的类是List4.javaList6.java

修改一个已有的View类型

在某些情况下可以用一种更简单的创建自定义View的方法。如果已经有了一个和所希望创建的组件非常相似的组件,可以继承该组件并覆盖那些希望改变的行为。可以像对完全自定义的组件那样对这个继承的组件进行任何处理,只不过是需要从View层级中一个更为特殊化的类开始罢了。与此同时还可以额外获得其他很多所需要的功能。

例如,SDK在范例中包含了一个NotePad程序。它演示了使用Android平台的许多方面,包括继承一个EditText View来实现带有划线的记事本。这并不是一个完美的范例,且实现这个效果的API相对这个比较早期的版本可能会发生改变,不过它确实展示了一些使用原则。

如果还没有尝试过,那就将NotePad范例导入到Eclipse(或只是查看所提供的链接中的源代码)。特别是查看NoteEditor.java文件中MyEditText的定义。

其中一些要点如下。

1. 定义

该类由以下代码定义:

public static class MyEditText extends EditText

  • 它被定义为NoteEditor活动的一个内部类,不过因为它是公有的所以可以在需要时从NoteEditor外部以NoteEditor.MyEditText被使用。
  • 它是静态的,意味着它不会生成所谓的“合成方法(synthetic method)”以允许它读取其父类的数据。这同时也意味着它是一个具有独立行为的类,并没有和NoteEditor保持着高度相关性。这是创建不需要读取外部类的数据的内部类时一种比较条理清楚的做法,它使得生成的类较小且能被其他类所使用。
  • 在这里EditText被选作需要自定义的View来被它继承。当完成后,一个新的类可以用来替代通常的EditText视图。

2. 类初始化

和往常一样,super被首先调用。另外,这不是一个默认的构造函数,而是包含了一些的参数。EditText在通过XML布局文件生成时将用到这些参数,因此,新的构造函数也要获取这些参数并将其传递给父类的构造函数。

3. 覆盖方法

在该范例中,只覆盖了一个方法:onDraw() —— 不过当创建自己的自定义组件时很可能需要覆盖更多方法。

对于NotePad范例来书,覆盖onDraw()方法使得能够在EditText视图的画布(canvas)上绘制蓝线(画布被传递给了被覆盖的onDraw()方法)。super.onDraw()方法在该方法结束前会被调用。这一父类方法的调用是必需的,不过在这里,它在完成了所希望的直线的绘制后才被最后执行。

4. 使用自定义组件

现在已经有了自定义的组件,不过该如何使用呢?在NotePad范例中,自定义组件被直接从声明式的布局中使用,所以现在来看下res/layout文件夹下的note_editor.xml

*该自定义组件作为通用视图在XML中被创建,且该类被指定为使用整个包。还要注意所定义的内部类通过NoteEditor$MyEditText标识来引用,这是Java编程语言中引用内部类的标准方式。

如果自定义的View组件没有作为内部类被定义,那么还可以用XML元素名称来声明该View组件而不包括class属性。例如:

注意现在的MyEditText类是一个单独的类文件。当这个类被嵌套于NoteEditor类中时,这样的做法将会有问题。

*定义中的其他属性和参数将被传递至自定义组件的构造函数,之后被传入EditText的构造函数,即这些也是EditText所需要使用的参数。注意还可以增加自有参数,之后还会涉及这一问题。

该范例的说明至此。确实这只是个简单的例子,但它演示了关键点——可以根据需求创建任何复杂的自定义组件。

一个更为复杂的组件可能需要覆盖更多的on…方法并且引入一些自有的方法以完全自定义其属性和行为。唯一的限制就仅仅是想象力和实际需要组件去完成怎样的工作。

 返回用户界面

本页部分内容根据Android Open Source Project创作并共享的内容修改,并在知识共享 署名2.5许可协议中所述条款的限制下使用。

索尼(SONY)发表防水运动Walkman播放器W系列最新型号,重量减少25%

索尼今天正式发表了旗下Walkman W系列的最新型号W263。

W系列是索尼这几年推出的,主打运动。从第二代起还加入了防水特性(IPX5等级)、可直接用水清洗,对于出汗和下雨也是轻松应对。而这次新型号主要是进行了轻量化的改进,从前代产品的43克降为了32克,减少了负重感。

其他方面,W263具备4GB存储空间,一次充电续航时间约8小时(mp3格式)/7小时(atrac格式),支持3分钟快速充电功能(提供60分钟播放时间),具有ZAPPIN选取功能(即可自动识别并播放乐曲的副歌部分以帮助用户快速换曲),提供了粉、蓝、白、黑四色。

W263在日本市场将于9月10日上市,预计售价10000日元(约800人民币)。鉴于过去大陆市场总是能较为快速地引入W系列产品,这次应该也会在之后不久引进。

Walkman W263的产品页面(日文)

索尼和adidas合作的W系列推广网站(日文,内有大量W系列实际佩戴效果图)

本文图片版权属于Sony Corporation

索尼爱立信(Sony Ericsson)发表新型号Android手机、2011年Xperia手机将得到Android 2.3.4系统升级

今天索尼爱立信正式发表了新型号的Android手机Xperia neo V以进一步扩充Xperia家族的产品线。

作为Xperia neo的后续机型(?),其卖点是将最先搭载索尼爱立信定制的Android 2.3.4系统于今年第四季度上市。相比前辈neo,neo V的摄像头有所削弱,规格上仅仅为500万象素且没有采用Exmor R for Mobile,不过将支持3D全景拍摄功能。前置摄像头配合新版系统将使其具备视频通话的能力。Moblie BRAVIA® Engine这一软件显示效果优化功能及HDMI输出功能则得以保留。其他硬件规格则基本与2011年机型相同。猜测neo V应该可以以一个较为有竞争力的价格上市。

另外索尼爱立信正式宣布了2011年Xperia机型获得2.3.4系统升级的日期。根据不同地区,计划于今年十月开始陆续发布升级。也就是说Xperia X10将不在这次升级机型之列。升级包含的改进点包括但不限于:

  • 具有前置摄像头的机型将具备视频通话功能
  • 由Sony提供的3D全景拍摄功能(我见过实际的拍摄效果,确实很有意思)
  • 增加一些USB扩展性外设支持
  • Swipe文本输入法
  • 任意情况下的屏幕截图功能

这次升级可以通过OTA下载,也可以通过PC Companion升级。

本文中出现的图像版权属于Sony Ericsson Mobile Communications AB。

索尼爱立信官方新闻稿见这里

索尼(SONY)发表两款新EVIL,扩展NEX家族产品线

今天索尼发表了两款新的微单相机,NEX-5N以及NEX-7。

NEX-5N是之前大受好评的NEX-5的后续机型。其主要特性为:

  • 约1610万有效像素的 “Exmor”APS HD CMOS传感器
  • 世界最短约0.02s的释放时间延迟的超高速响应
  • 最高ISO25600,在暗处亦可实现高质量低噪点摄影

此外1920×1080/60p,60i,24p高清录制及具有滤网的高性能立体声麦克风、简单易用的My photo style TOUCH操作界面、照片效果调节、持续对焦、面部识别/记忆、每秒10张高速连拍、全景拍摄、3D全景拍摄、减少模糊的手持夜景模式、自动HDR、E接口镜头补偿等功能保证了NEX-5N的全面泛用性。

NEX-7则是NEX系列的全新旗舰机型。其主要特性为:

  • 全新开发的2430万有效像素“Exmor”APS HD CMOS传感器
  • 世界最短约0.02s的释放时间延迟的超高速响应
  • 三物理操作杆快捷操作
  • 全世界首先采用有机EL(XGA)取景器并搭载了闪光灯,实现了约235.9万点解析度(高精细屏幕高对比度显示

此外1920×1080/60p,60i,24p高清录制及具有滤网的高性能立体声麦克风、高强度镁合金机身、约92.1万像素的3英寸Tru Black可变角度液晶屏、照片效果调节、每秒10张高速连拍、全景拍摄、3D全景拍摄、减少模糊的手持夜景模式、自动HDR、E接口镜头补偿等功能使之成为了名副其实的新一代NEX旗舰。

两款机型将分别与9月初及11月在日本发售,尚无国内何时发布的消息。

与NEX-5N和NEX-7同时发布的还有Alpha系列的α77与α65,主要特性是采用了新开发的2430万有效像素“Exmor”APS HD CMOS传感器实现了更高的画质并支持每秒12张/10张的高速连拍等。都将于10月在日本上市。

除了相机,今天也一并发布了数款新镜头。

以下是本次新机型发布的新闻稿(日文)链接及产品页面,内含各型号的具体规格参数:

综合/NEX-5N/NEX-7/α77/NEX-5N主题页/NEX-7主题页

本文中图片版权均属于Sony Corporation

索尼爱立信(Sony Ericsson)发表新型号智能Walkman手机

今天索尼爱立信正式发表了名为Sony Ericsson Live with Walkman™的音乐智能手机。这部搭载了最新Android 2.3系统的Walkman手机以发现和分享音乐为卖点,中端的定位相信也能提供合适的价格。

图像版权属于Sony Ericsson Mobile Communications AB

这部手机的特色为:

  • 深度整合Facebook,加强了分享功能
  • 音乐发现功能,了解朋友们正在听的音乐
  • 无线按钮,一键搜索音乐的各类相关信息
  • 来自SONY的Qriocity音乐视频服务,在线获取各类资源
  • Sony的xLOUD™技术,提升使用扬声器时高音量下的音质
  • 经典项目TrackID™功能,了解正在听的音乐的信息

而硬件上,3.2英寸HVGA分辨率(480×320)的电容式多点触摸屏幕是中端主流配置,500万像素自动对焦带LED补光灯的摄像头也比其前辈W8提升了不少。进入Android时代后Walkman手机和普通手机的差异越来越小,这或许也是大多数消费者对于音质也并不敏感所造成的吧结果吧。在Walkman品牌号召力不如从前的现在,真希望再能见到一款高端Walkman手机。

关于手机参数等信息的具体新闻稿见这里(英文)。

Android用日常事项管理软件 Routine 版本升级 1.2.0

如之前所说的,在X10得到了2.3.3升级之后,为了保持界面风格上的统一,花了点时间对Routine又进行了一次小幅升级。

Routine是一款Android平台的GTD软件,写这个程序的初衷是为了弥补没有很适合自己用的Xperia X10的GTD工具的遗憾。程序的特色就是使用了索尼爱立信的UXP主题,能够和X10家族的机型保持界面风格上的统一。这次升级的界面是以索尼爱立信UXP 3.0风格(当前使用Android 2.3.3系统的各款机型所使用的界面风格)为基础的,由于Xperia X8、Xperia X10 mini和Xperia X10 mini pro这三部旧机型没有得到Android 2.3.3以及最新界面风格的升级支持,因此在这次Routine的界面改变之后反而变得风格不一了。

除了界面的改变之外,还为条目内容新增加了截止日期项。更多的信息可以参见之前的更新日志

今后计划增加的功能有和Google在线To do List的同步、到期提醒、循环和多种方式排序等。

目前Routine可以在Android Market的效率类应用程序中找到,搜索Routine、ルーチン或者pub:BREEZE即可。如果需要一款简单好用的GTD工具,不妨试试看Routine吧。

Android Market页面:

http://market.android.com/details?id=org.breezesoft.routine

最后是一些新版Routine的程序截图: