现在的位置: 首页 > 综合 > 正文

Android学习札记一:初涉View(1)

2013年08月12日 ⁄ 综合 ⁄ 共 2682字 ⁄ 字号 评论关闭

在View的学习中,借鉴以往JavaME的经验,这里首先把它们使用到的一些类、方法等简单做下类比:

Android-->JavaME

View-->Canvas

Canvas-->Graphics

onDraw(Canvas canvas)-->paint(Graphics g);

.

.

.

好,为直观起见,先呈出效果图

 

 

ViewMain类代码

 

 

 

在绘制UI上,须重写onDraw方法,第一点比较奇怪,在屏幕高、宽的获取上getWidth(),getHeight()写在构造函数中竟然无法获取,也就是说取值为0。那看来必须将其写入到onDraw中。第二点比较奇怪的就是关于锚点的问题,发觉Android中在draw的方法中如drawText("Hello!麦田守望者", 0, 20, paint),没有锚点,“默认的”把"Hello!麦田守望者"的左下角绘制在坐标(0,20)上,这一点感觉做的不如JavaME。

关于按键响应,我起初疑惑,有onKeyUp()、onKeyDown()怎么偏偏没有onKeyLeft()、onKeyRight()?翻阅相关文档才发现onKeyUp()、onKeyDown()指的是按钮被抬起,按下时的响应,而不是指方向键的的四个方向。这里我只重写了onKeyDown方法,即按键被按下时的响应函数。这里,也就相当于JavaME中的keyPressed()和keyReleased()。android手机的一个重要特点是其屏幕很大,几乎都支持触摸屏,稍微遗憾一点,触摸屏的实现稍后的学习中再讲了。

关于按钮响应,千万不要忘记调用this.postInvalidate(),有过JavaME经验的人就会知道,这也就有点相当于repaint()、serviceRepaints()以及flushGraphics()等方法。最后重要的一点,并不是说重写了onKeyDown()就可以做出响应的,还需有个“绑定”,即setFocusable(true)。

暂时先讲到这,墨水有限,继续蘸墨!

抱歉!评论已关闭.